数据结构与算法Java篇

二叉树的镜像

2018-10-16  本文已影响0人  NetCedar

问题描述
    操作给定的二叉树,将其变换为源二叉树的镜像。

trees.png

解题思路
    我们可以总结出这两棵树的根节点相同,但它们的左、右两个子节点交换了位置。所以我们可以得出求一棵树的镜像的过程:先前序遍历这棵树的每个节点,如果遍历到的节点有子节点,就交换它的两个子节点。当交换完所有非叶节点的左、右子节点之后,就得到了树的镜像。


public class Solution {
  /**
     * 二叉树的构造 内部类
     */
    public class TreeNode{
        int val;
        TreeNode left=null;
        TreeNode right=null;

        public TreeNode(int val) {
            this.val = val;
        }
    }
   public static void Mirror(TreeNode root) {
        if (root==null){
            return;
        }
          //交换左右节点
           TreeNode temp;
           temp=root.left;
           root.left=root.right;
           root.right=temp;

           //鲁棒性考虑
           if (root.left!=null) {
               Mirror(root.left);
           }
           if (root.right!=null) {
               Mirror(root.right);
           }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读