0
点赞
收藏
分享

微信扫一扫

面试题27:二叉树的镜像


题目:

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

分析:

两棵互为镜像的树,它们的根节点相同,左右两个子结点交换位置。对于这两个子结点来说,它们的两个子结点也交换了位置,这就是存在一个递归的关系。

递归结束的条件是:结点为空或者结点为叶节点。

解法:

package com.wsy;

class Tree {
private int value;
private Tree left;
private Tree right;

public Tree() {
}

public Tree(int value) {
this.value = value;
this.left = this.right = null;
}

public Tree(int value, Tree left, Tree right) {
this.value = value;
this.left = left;
this.right = right;
}

public int getValue() {
return value;
}

public void setValue(int value) {
this.value = value;
}

public Tree getLeft() {
return left;
}

public void setLeft(Tree left) {
this.left = left;
}

public Tree getRight() {
return right;
}

public void setRight(Tree right) {
this.right = right;
}
}

public class Main {
public static void main(String[] args) {
Tree A = initA();
Tree B = getMirror(A);
}

public static Tree initA() {
Tree tree1 = new Tree(8);
Tree tree2 = new Tree(6);
Tree tree3 = new Tree(10);
Tree tree4 = new Tree(5);
Tree tree5 = new Tree(7);
Tree tree6 = new Tree(9);
Tree tree7 = new Tree(11);
tree1.setLeft(tree2);
tree1.setRight(tree3);
tree2.setLeft(tree4);
tree2.setRight(tree5);
tree3.setLeft(tree6);
tree3.setRight(tree7);
return tree1;
}

public static Tree getMirror(Tree A) {
if (A == null) {
return null;
}
if (A.getLeft() == null && A.getRight() == null) {
return null;
}
Tree temp = A.getLeft();
A.setLeft(A.getRight());
A.setRight(temp);
getMirror(A.getLeft());
getMirror(A.getRight());
return A;
}
}

 

举报

相关推荐

0 条评论