二叉树的镜像输出

1:题目描述

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

例如输入:

     4
   /   \
  2     7
 / \   / \
1   3 6   9
镜像输出:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/er-cha-shu-de-jing-xiang-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2:题目分析

首先遇到问题,第一件事就是分析问题!!!!不要提前自己先下注意判断这个题目难不难,只有当自己认真分析后,才知道!这到题目经过分析,可以很简单的到结论九十;通过将所有节点的左右子树交换的方式可以的到镜像二叉树,观察问题,分析问题,提炼问题也是一种能力的体现,不是光做题!

算法思路;

  1. 按照二叉树的前序遍历的方式,遍历所有节点。
  2. 交换该节点的左右子树,然后对该子树的左右节点进行递归调用本方法,
  3. return root

迭代方法的设计三要素:

  1. 本次迭代的终止条件;本节点为null
  2. 本次迭代的终止条件下的处理;return 即可
  3. 如果不终止,则迭代逻辑;交换本节点的左右子树,然后进入本节点的子节点进行迭代!!!

3:代码示例

class Solution {
    //递归线序遍历的方式,来进行左右子树的换位。
    public TreeNode mirrorTree(TreeNode root) {
        if(root == null){
            return root;
        }
        //左右子树交换
        TreeNode temp = root.left;
        root.left = root.right ;
        //左右子树递归
        root.right = temp ;
        mirrorTree(root.left);
        mirrorTree(root.right);
        return root;
    }
}

猜你喜欢

转载自www.cnblogs.com/dazhu123/p/12503605.html
今日推荐