美文网首页
二叉树的反转

二叉树的反转

作者: 加油_汤姆叔叔 | 来源:发表于2019-07-07 14:06 被阅读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;
        }
    }
    

    相关文章

      网友评论

          本文标题:二叉树的反转

          本文链接:https://www.haomeiwen.com/subject/mqmbhctx.html