题目描述
翻转一棵二叉树。
图片说明

运行结果
图片说明
解题思路
递归翻转左右子树,然后更新左右子树
注意:先保存下左右子树的翻转结果,再分别更新根节点的左右子树(否则出错)
java代码

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public TreeNode invertTree(TreeNode root) {//后序遍历
        if(root==null) return null;
        TreeNode left=invertTree(root.right);
        TreeNode right=invertTree(root.left);
        root.left=left;
        root.right=right;
        return root;
    }
}
class Solution {
    public TreeNode invertTree(TreeNode root) {//前序遍历
        if(root==null) return null;
        TreeNode tmp=root.left;
        root.left=root.right;
        root.right=tmp;
        invertTree(root.right);
        invertTree(root.left);
        return root;
    }
}