使BinaryTree对称

时间:2016-04-21 17:07:00

标签: java

public static int mirror(BinaryNode<Integer> root)
   {

       if(root==null)
       {
           return 0;
       }
       else
       {
           root.setRight(root.getLeft());  
            mirror(root.getLeft());
            mirror(root.getRight());
        }
       return 0;
   }

输入4261357(级别顺序遍历)

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

输出4221111(级别顺序遍历)

      4
     / \
    2   2
   / \ / \
  1  1 1  1

但我想从左到右镜像

      4
     / \
    2   2
   / \ / \
  1  3 3  1

如何修复此代码?

1 个答案:

答案 0 :(得分:0)

你需要交换这两个部分:

        temp = root.getLeft();
        root.setLeft(root.getRight());  
        root.setRight(temp); 

        mirror(root.getLeft());
        mirror(root.getRight());