leetcode hot100

翻转二叉树

leetcode hot100_第1张图片
本题中要求翻转二叉树,反转的是指针而不是数值,所以,我们要知道这一点。

翻转的过程是首先遍历,然后遍历到处理的节点之后,交换节点的左右孩子即可。

那么我们可以采取前序、后序遍历。中序遍历相对绕。

以前序为例,首先把根节点4的左右孩子互换,此时7在左,2在右。然后,在以左侧遍历,交换7的左右孩子;之后再交换右侧2节点的左右孩子即可。

class Solution {
    public TreeNode invertTree(TreeNode root) {
        if(root == null){
            return root;
        }
        swapChildren(root);
        invertTree(root.left);
        invertTree(root.right);
        
        return root;
    }
    private void swapChildren(TreeNode root){
        TreeNode temp = root.left;
        root.left = root.right;
        root.right = temp;
    }
}

后续的话直接将 swapChildren(root);放到 invertTree(root.right);后面即可。

你可能感兴趣的:(leetcode,算法,职场和发展)