翻转二叉树
前序遍历
var invertTree = function(root) {
if(!root) return root
// swap 左右子树
let tmp = root.left
root.left = root.right
root.right = tmp
// 递归到左右子树
invertTree(root.left)
invertTree(root.right)
return root
};
上面的这种解法还比较好理解,在进入每个节点的时候,直接swap(left, right)
然后对其左右子树都进行相同的操作即可
后序遍历
var invertTree = function(root) {
if(!root) return root
let left = invertTree(root.left)
let right = invertTree(root.right)
root.left = right
root.right = left
return root
};
上面这种解法就是后序遍历的写法了,左右根,遍历完左右子树,然后再处理跟节点