recurseInOrder(root.right);
}
publicstaticvoidstackInOrder(TreeNoderoot){
Stackstack=newStack();
if(root==null)
return;
else
stack.push(root);
TreeNodetemp=root.left;
while(temp!=null){
stack.push(temp);
temp=temp.left;
}
temp=(TreeNode)stack.pop();
while(temp!=null){
System.out.println(temp.value);
temp=temp.right;
while(temp!=null){
stack.push(temp);
temp=temp.left;
}
if(stack.empty())
break;
temp=(TreeNode)stack.pop();
}
}
publicstaticvoidmain(String[]args){
TreeNodenode1=newTreeNode(null,null,1);
TreeNodenode2=newTreeNode(null,node1,2);
TreeNodenode3=newTreeNode(null,null,3);
TreeNodenode4=newTreeNode(node2,node3,4);
TreeNodenode5=newTreeNode(null,null,5);
TreeNoderoot=newTreeNode(node4,node5,0);
System.out.println("TreeHeightis"+getTreeHeight(root));
System.out.println("RecurseInOrderTraverse");
recurseInOrder(root);
System.out.println("StackInOrderTraverse");
stackInOrder(root);
System.out.println("RecursePreOrderTraverse");
recursePreOrder(root);
System.out.println("StackPreOrderTraverse");
stackPreOrder(root);
}
}
用LinkedList重写的Stack:
importjava.util.EmptyStackException;
importjava.util.LinkedList;
publicclassStack{
privateLinkedListlist;
publicStack(){
this.list=newLinkedList();
}
publicbooleanempty(){
returnlist.isEmpty();
}
publicObjectpeek(){
if(empty())
thrownewEmptyStackException();