一道HP的面试题,拿来复习下递归:
import java.util.Stack;
/**
*
*/
public class TreeTest {
public static void main(String[] args) {
Noder root = Noder.init();
System.out.println("DLR:");
Noder.preOrder(root);
System.out.println("");
System.out.println("LDR:");
Noder.inOrder(root);
System.out.println("");
System.out.println("LRD:");
Noder.postOrder(root);
}
}
class Noder {
private String name;
private Noder leftNoder;
private Noder rightNoder;
public Noder(String name, Noder leftNoder, Noder rightNoder) {
this.name = name;
this.leftNoder = leftNoder;
this.rightNoder = rightNoder;
}
public static Noder init() {
Noder D = new Noder("D",null,null);
Noder E = new Noder("E",null,null);
Noder F = new Noder("F",null,null);
Noder G = new Noder("G",null,null);
Noder B = new Noder("B",D,E);
Noder C = new Noder("C",F,G);
Noder A = new Noder("A",B,C);
return A;
}
public static void printNode(Noder noder){
System.out.print(noder.getName()+" ");
}
public static void preOrder(Noder noder){
if(noder != null){
printNode(noder);
preOrder(noder.getLeftNoder());
preOrder(noder.getRightNoder());
}
}
public static void inOrder(Noder noder){
if(noder != null){
inOrder(noder.getLeftNoder());
printNode(noder);
inOrder(noder.getRightNoder());
}
}
public static void postOrder(Noder noder){
if(noder != null){
postOrder(noder.getLeftNoder());
postOrder(noder.getRightNoder());
printNode(noder);
}
}
public static void stackPreOrder(Noder noder){
Stack<Noder> stack = new Stack<Noder>();
if(noder != null){
stack.push(noder);
while(!stack.empty()){
noder = stack.pop();
printNode(noder);
if(noder.getRightNoder()!=null){
stack.push(noder.getRightNoder());
}
if(noder.getLeftNoder()!=null){
stack.push(noder.getLeftNoder());
}
}
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Noder getLeftNoder() {
return leftNoder;
}
public void setLeftNoder(Noder leftNoder) {
this.leftNoder = leftNoder;
}
public Noder getRightNoder() {
return rightNoder;
}
public void setRightNoder(Noder rightNoder) {
this.rightNoder = rightNoder;
}
}