LeetCode:地址
题目要求
翻转一棵二叉树。
示例 1:
输入:
4
/ \
2 7
/ \ / \
1 3 6 9
输出:
4
/ \
7 2
/ \ / \
9 6 3 1
备注: 这个问题是受到 Max Howell 的 原问题 启发的 :
谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。
思路
使用递归,其实是后序遍历(自底向上),先翻转左右子树,再将子树换个位置
也是一个分治问题: 分:获取左右子树 解:递归的翻转左右子树 合:将翻转后的左右子树换个位置放到根节点上
代码
var invertTree = function(root) {
if(!root) { return null; }
return {
val: root.val,
left: invertTree(root.right),
right: invertTree(root.left)
}
};