树节点定义:
classTreeNode{
publicTreeNodeleft;
publicTreeNoderight;
publicintvalue;
publicTreeNode(TreeNodeleft,TreeNoderight,intvalue){
this.left=left;
this.right=right;
this.value=value;
}
}
二叉树及其操作:
publicclassBinaryTree{
publicstaticintgetTreeHeight(TreeNoderoot){
if(root==null)
return0;
if(root.left==null&;&;root.right==null)
return1;
return1+Math
.max(getTreeHeight(root.left),getTreeHeight(root.right));
}
publicstaticvoidrecursePreOrder(TreeNoderoot){
if(root==null)
return;
System.out.println(root.value);
if(root.left!=null)
recursePreOrder(root.left);
if(root.right!=null)
recursePreOrder(root.right);
}
publicstaticvoidstackPreOrder(TreeNoderoot){
Stackstack=newStack();
if(root==null)
return;
stack.push(root);
System.out.println(root.value);
TreeNodetemp=root.left;
while(temp!=null){
stack.push(temp);
System.out.println(temp.value);
temp=temp.left;
}
temp=(TreeNode)stack.pop();
while(temp!=null){
temp=temp.right;
while(temp!=null){
stack.push(temp);
System.out.println(temp.value);
temp=temp.left;
}
if(stack.empty())
break;
temp=(TreeNode)stack.pop();
}
}
publicstaticvoidrecurseInOrder(TreeNoderoot){
if(root==null)
return;
if(root.left!=null)
recurseInOrder(root.left);
System.out.println(root.value);
if(root.right!=null)