用java实现二叉树
import java.util.Arrays;
import java.util.Iterator;
public class TreeNode{
public TreeNode left;
public TreeNode right;
public int value;
public TreeNode(int value) {
this.value=value;
}
public void add(int value) {//添加节点
if(this.value<value) {
if(right==null) {
right=new TreeNode(value);
}else {
right.add(value);
}
}else {
if(left==null) {
left=new TreeNode(value);
}else {
left.add(value);
}
}
}
public boolean find(int value) {//查找
if(value==this.value) {
return true;
}else if(value<this.value) {
if(left==null) return false;
else return left.find(value);
}else {
if(right==null) return false;
else return right.find(value);
}
}
public void preList() {//前序遍历
System.out.print(" "+value);
if(left!=null) left.preList();
if(right!=null) right.preList();
}
public void middleList() {
if(left!=null) left.middleList();
System.out.print(" "+value);
if(right!=null) right.middleList();
}
public void afterList() {
if(left!=null) left.afterList();
if(right!=null) right.afterList();
System.out.print(" "+ value);
}
public static void main(String[] args) {
// int[] Node= {32,56,7,3,86,3,66,44};
// //在进行此调用之前,必须对数组进行排序(如sort(int[])方法)。 如果没有排序,索引结果是-Node.length。
// System.out.println(Arrays.binarySearch(Node, 32));
// Arrays.sort(Node);
// System.out.println(Arrays.toString(Node));
// //排序后,搜索键的索引,如果它包含在数组中; 否则, (-(insertion point) - 1) 。
// System.out.println(Arrays.binarySearch(Node, 78));
boolean flag=true;
int[] Node=new int[8];
for(int i=0;i<Node.length;i++) {
int num=(int) (Math.random()*20);
for(int j=0;j<i;j++) {//排除数组中重复数
if(num==Node[j]) {
flag=false;
break;
}
}
if(flag) Node[i]=num;
else i--;flag=true;
}
System.out.println(Arrays.toString(Node));
TreeNode tn=new TreeNode(Node[0]);
for(int i=1;i<Node.length;i++) {
tn.add(Node[i]);
}
System.out.println(tn.find(12));;
System.out.println(tn.find(5));;
tn.preList();
System.out.println();
tn.middleList();
System.out.println();
tn.afterList();
}
}