var invertTree = function(root) {
if(root === null) return null;
var temp = root.left;
root.left = invertTree(root.right);
root.right = invertTree(temp);
return root;
};
var invertTree = function(root) {
if(root === null) return;
// swap left and right child
var temp = root.left;
root.left = root.right;
root.right = temp;
// recurse into children
invertTree(root.left);
invertTree(root.right);
};
这两个程序的递归细节是一样的吗?
交换树的左右节点
从一个节点出发,那就是left和right相互交换
如果代码这样写,只是简单地做到了一个节点下的left、right交换,left、right下的节点并没有进行左右交换,要知道left、right下也可能是有节点的,那么需要进入left/right节点,交换其下的左右节点,这个过程和上面的过程相同,这个过程可以一直进行下去,直到其节点下面没有子节点,不需要再交换,这个条件就是
if(root === null) return null;