leetcode226.翻转二叉树

  • 题目:给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

  • 思路一:利用二叉树遍历,每个节点的前序位置或者后序位置,交换其左右节点的位置。(推荐)

class Solution {
    public TreeNode invertTree(TreeNode root) {
        traveter(root);
        return root;
​
    }
​
    public void traveter(TreeNode root){
        if(root==null){
            return;
        }
        //前序位置
        TreeNode tmp = root.left;
        root.left = root.right;
        root.right = tmp;
​
        traveter(root.left);
        traveter(root.right);
    }
}
  • 思路二:先把左子树翻转,还有再把右子树翻转,最后把root节点的左右子树翻转。

class Solution {
    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;
​
    }
​
  
}

你可能感兴趣的:(leetcode算法题解答,leetcode,算法,java)