函数定义:给 invertTree函数输⼊一个节点 root, 将以root为根的树的节点翻转。
1、交换左右子节点
2、翻转左子树和右子树。
注意事项:前序和后续都可以,中序不行。因为先翻转左子树,交换左右子节点,再反转右子树,此时的右子树就是原来的左子树,但是原来的右子树没有被反转到,如上图就会变成4,7,2,1,3,6,9
public TreeNode invertTree(TreeNode root) {
if (root == null) {
return null;
}
/**** 前序遍历位置 ****/
// root 节点需要交换它的左右⼦节点
TreeNode temp = root.left;
root.left = root.right;
root.right = temp;
// 让左右⼦节点继续翻转它们的⼦节点
invertTree(root.left);//翻转左子树
invertTree(root.right);//翻转右子树
return root;
}