题目:给你一棵二叉树的根节点
root
,翻转这棵二叉树,并返回其根节点。
思路: 递归(自顶向下)
- 终止条件:当前节点为
null
时返回- 交换当前节点的左右节点,再递归的交换当前节点的左节点,递归的交换当前节点的右节点
class Solution {
public TreeNode invertTree(TreeNode root) {
//递归函数的终止条件,节点为空时返回
if(root==null) {
return null;
}
//下面三句是将当前节点的左右子树交换
TreeNode tmp = root.right;
root.right = root.left;
root.left = tmp;
//递归交换当前节点的 左子树
invertTree(root.left);
//递归交换当前节点的 右子树
invertTree(root.right);
//函数返回时就表示当前这个节点,以及它的左右子树
//都已经交换完了
return root;
}
}