package cglib;
/**
* 說明生活中遇到的二叉樹,用 java 實現二叉樹 。
* store(int value)能夠選擇二叉樹中是否能夠存在相同的值
*/
public class BinaryTree {
public int value;
public BinaryTree right;
public BinaryTree left;
public static void main(String args[]){
int[] data=new int[5];
StringBuffer sb = new StringBuffer();
for(int i=0;i<data.length;i++){
data[i]=(int)(Math.random()*100)+1;//0+1<<x*100+1<<1*100+1
sb.append(data[i] + ",");
}
int len = sb.length();
if(len >0){
sb.deleteCharAt(len-1);
}//去掉最後一個逗號
System.out.println(sb.toString());
BinaryTree root = new BinaryTree();
root.value = data[0];
System.out.println("root.value="+root.value);
for(int i=1; i<data.length; i++){
root.store(data[i]);
}
System.out.println("root.find(5)="+root.find(5));
root.preList();
System.out.println();
root.middleList();
System.out.println();
root.afterList();
}
public void store(int value){
System.out.println("存儲value=" +value);
System.out.println("store:this.value=" +this.value);
if(value<this.value){
if(left==null){
left = new BinaryTree();
left.value=value;
}else{
left.store(value);
}
}else if(value>this.value){
if(right==null){
right = new BinaryTree();
right.value=value;
}else{
right.store(value);
}
}//已經存在的值,即值相等的值,不插入
}
public boolean find(int value){
System.out.println("找尋value=" +value);
System.out.println("find:this.value=" +this.value);
if(value ==this.value)
{
return true;
}
else if(value>this.value){
if(right ==null){
return false;
}
return right.find(value);
}else
{
if(left ==null){
return false;
}
return left.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+",");
}
}java
輸出:app
47,8,45,72,34
root.value=47
存儲value=8
store:this.value=47
存儲value=45
store:this.value=47
存儲value=45
store:this.value=8
存儲value=72
store:this.value=47
存儲value=34
store:this.value=47
存儲value=34
store:this.value=8
存儲value=34
store:this.value=45
找尋value=5
find:this.value=47
找尋value=5
find:this.value=8
root.find(5)=false
47,8,45,34,72,
8,34,45,47,72,
34,45,8,72,47,dom