以下代码实现了二叉树的存储,查找,遍历(前序、中序、后序)
package cn.itcast;
public class Node {
public int value;
public Node left;
public Node right;
public void store(int value){
if(value < this.value){
if(left == null){
left = new Node();
left.value = value;
}
else{
left.store(value);
}
}
else{
if(right == null){
right = new Node();
right.value = value;
}
else{
right.store(value);
}
}
}
public boolean find(int value){
System.out.println("find:"+this.value);
if(value == this.value)
return true;
else if (value < this.value){
if(left == null)
return false;
return left.find(value);
}
else
{
if(right == null)
return false;
return right.find(value);
}
}
public void preList(){
System.out.print(this.value+",");
if(left!= null)
left.preList();
if(right != null)
right.preList();
}
public void middleList(){
if(left != null)
left.middleList();
System.out.print(this.value +",");
if(right != null)
right.middleList();
}
public void afterList(){
if(left != null)
left.afterList();
if(right !=null)
right.afterList();
System.out.print(this.value +",");
}
public static void main(String[] args){
int[] data = new int[20];
for(int i = 0;i<data.length;i++){
data[i]= (int)(Math.random()*100)+1;
System.out.print(data[i]+",");
}
System.out.println();
Node root = new Node();
root.value = data[0];
for(int i = 1;i<data.length;i++){
root.store(data[i]);
}
root.find(data[19]);
System.out.println();
root.preList();
System.out.println();
root.middleList();
System.out.println();
root.afterList();
}
}