思路:实际上是交换除了叶子结点外的结点的左右子树,在重复这个过程。
public static void mirrorRecurs(TreeNote root){
if(root==null){
return;
}
if(root.getLeftTreeNote()==null&&root.getRighTreeNote()==null){
return ;
}
TreeNote lefTreeNote=root.getLeftTreeNote();
TreeNote righTreeNote=root.getRighTreeNote();
//交换结点的左右子树
root.setLeftTreeNote(righTreeNote);
root.setRightTreeNote(lefTreeNote);
if(lefTreeNote.getLeftTreeNote()!=null){
mirrorRecurs(lefTreeNote);
}
if(righTreeNote.getRighTreeNote()!=null){
mirrorRecurs(righTreeNote);
}
}
TreeNote类:
public class TreeNote {
private int value; //节点值
private TreeNote leftTreeNote; //左子树
private TreeNote rightTreeNote; //右子树
public TreeNote(){
}
public TreeNote(int value) {
this.value=value;
}
public void setValue(int value){
this.value=value;
}
public int getValue(){
return value;
}
public void setLeftTreeNote(TreeNote leftTreeNote){
this.leftTreeNote=leftTreeNote;
}
public TreeNote getLeftTreeNote(){
return leftTreeNote;
}
public void setRightTreeNote(TreeNote rightTreeNote){
this.rightTreeNote=rightTreeNote;
}
public TreeNote getRighTreeNote(){
return rightTreeNote;
}
}