剑指offer面试题27. 二叉树的镜像

题目

题目地址

方法一(dfs):

递归的交换俩个节点的值 示意图如下
剑指offer面试题27. 二叉树的镜像_第1张图片

 public TreeNode mirrorTree(TreeNode root) {
        if(root==null){
            return null;
        }
        TreeNode tmp = root.left;
        root.left = root.right;
        root.right = tmp;
        mirrorTree(root.left);
        mirrorTree(root.right);
        return root;
    }

方法二(bfs ):

把每个节点放到队列中,然后交换左右节点顺序
剑指offer面试题27. 二叉树的镜像_第2张图片


public TreeNode mirrorTree(TreeNode root) {
        if(root==null){
            return null;
        }
        Queue queue = new LinkedList();
        queue.add(root);
        while (!queue.isEmpty()){
            TreeNode node = queue.poll();
            TreeNode temp = node.left;
            node.left = node.right;
            node.right=temp;
            if(node.left!=null){
                queue.add(node.left);
            }
            if(node.right!=null){
                queue.add(node.right);
            }
        }
        return root;
    }

方法三

直接重新构造一个二叉树, 把原树遍历到新树中即可

参考

https://leetcode-cn.com/problems/er-cha-shu-de-jing-xiang-lcof/solution/dong-hua-yan-shi-liang-chong-shi-xian-mian-shi-ti-/

你可能感兴趣的:(数据结构和算法)