面试题27:二叉树的镜像

难度:简单
请完成一个函数,输入一个二叉树,该函数输出它的镜像。

例如输入:

     4
   /   \
  2     7
 / \   / \
1   3 6   9

镜像输出:

     4
   /   \
  7     2
 / \   / \
9   6 3   1

示例 1:
输入:root = [4,2,7,1,3,6,9]
输出:[4,7,2,9,6,3,1]

解答:
利用树的层序遍历,每次循环交换树的两个左右节点

class Solution {
    public TreeNode mirrorTree(TreeNode root) {
        Queue<TreeNode> queue = new ArrayDeque<>();

        if(root == null) return root;
        
        queue.add(root);
        TreeNode node = null;
        TreeNode temp = null;
        while(queue.size() != 0){
          node = queue.remove();
           if(node.right != null || node.left != null){
               temp = node.right;
               node.right = node.left;
               node.left = temp;
           }
           if(node.left != null)
                queue.add(node.left);
           if(node.right != null)
                queue.add(node.right);     
        } 
        return root;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容