一道HP的面試題,拿來複習下遞迴:
import java.util.Stack;/** * @author gl65293 * */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; }}