LetCode 226
图中是最简单的一个二叉树,翻转后的结果是2 3 7。其中OX001,OX002,OX003仅仅代表子节点在堆内存中的真实地址。
注意,这里的地址是不会发生变化的。
上代码
public class TreeNode {
int val;
// 这里仅仅表示引用,会发生变化
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
public class T1 {
public TreeNode invertTree(TreeNode root) {
if (root == null) {
return null;
}
TreeNode left = invertTree(root.left);
TreeNode right = invertTree(root.right);
root.left = right;
root.right = left;
return root;
}
}
从图中可以看出,只有根节点的树,翻转后不会变化。返回的是子树根节点的地址,当子树递归完之后,双亲结点的地址引用将会发生交换,也就是翻转。