给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。
方式一:递归,自底向上
java
// 反转一颗二叉树: 使用递归的方式的实现 -- 自底向上
public TreeNode invertTree(TreeNode root) {
// 递归跳出条件
if (root == null) {
return root;
}
// 先反转左子树
TreeNode leftNode = invertTree(root.left);
// 再反转右子树
TreeNode rightNode = invertTree(root.right);
// 再反转当前节点左右子树
root.left = rightNode;
root.right = leftNode;
return root;
}
方式二:递归,自顶向下
java
public TreeNode invertTree2(TreeNode root) {
TreeNode temp = root;
doInvertTree(temp);
return root;
}
// 反转一颗二叉树: 使用递归的方式的实现,自顶向下
public void doInvertTree(TreeNode root) {
// 递归跳出条件
if (root == null) {
return;
}
// 反转当前节点左右子树
TreeNode tempNode = root.left;
root.left = root.right;
root.right = tempNode;
// 先反转左子树
invertTree(root.left);
// 再反转右子树
invertTree(root.right);
}