二叉树的反转

2019-07-07  本文已影响0人  加油_汤姆叔叔

leetcode原题:(https://leetcode-cn.com/problems/invert-binary-tree/)

题解:使用层序遍历的方式比较合适,其实只要交换每一层的左右子节点,因为交换每一串的左右子节点,左节点的左右子节点也会跟着交换过去,这时候只要把左节点的左子节点与右子节点交换,同时右节点也是如此操作即可达到题目要求。

class Solution {
    public TreeNode invertTree(TreeNode root) {
        // 本题使用层序遍历的方式
        if(root == null){
            return root;
        }
        
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        while(!queue.isEmpty()){
            TreeNode cur = queue.poll();
            TreeNode temp = cur.left;
            
            //   不需要考虑是否为空的,因为为空的话把空交换过去交换过去即可。
            cur.left = cur.right;
            cur.right = temp;
            
            if(cur.left != null){
                queue.offer(cur.left);
            }
            if(cur.right != null){
                queue.offer(cur.right);
            }
        }
        
        return root;
    }
}
上一篇下一篇

猜你喜欢

热点阅读