用java实现二叉树

用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();
	}

}
发布了63 篇原创文章 · 获赞 17 · 访问量 4103

猜你喜欢

转载自blog.csdn.net/Bonport/article/details/103006184