`

java实现二叉树排序树

 
阅读更多

首先定义节点类

public class TreeNode {
	Object obj;
	TreeNode parent;
	TreeNode lchild;
	TreeNode rchild;
	
	public TreeNode(int obj) {
		this.obj = obj;
	}
}

 然后创建一个树类

public class Tree {
	
	/**
	 * 先序遍历二叉树
	 * @param root
	 */
	public void Fprint(TreeNode root){
		if(root!=null){
			System.out.println(root.obj);
			Fprint(root.lchild);
			Fprint(root.rchild);
		}
	}
	
	/**
	 * 中序遍历二叉树
	 * @param root
	 */
	public void Mprint(TreeNode root){
		if(root!=null){
			Mprint(root.lchild);
			System.out.println(root.obj);
			
			Mprint(root.rchild);
		}
	}
	
	/**
	 * 根据一个int数组建立二叉排序树
	 * @param a 数组
	 * @return
	 */
	public TreeNode Build(int[] a){
		if(a.length==0){
			return null;
		}
		TreeNode root = new TreeNode(a[0]);
		for(int i=1;i<a.length;i++){
			TreeNode newnode = new TreeNode(a[i]);
			sort(root,newnode);
		}
		return root;
	}
	/**
	 * 在二叉排序树中添加一个节点
	 * @param root 二叉树的根节点
	 * @param newnode 新加入的加点
	 * @return
	 */
	public void sort(TreeNode root,TreeNode newnode){
		TreeNode node = root;
		if((Integer)newnode.obj<=(Integer)node.obj){
			if(node.lchild==null){
				newnode.parent = node;
				node.lchild = newnode;
			}else{
				sort(node.lchild,newnode);
			}
		}else{
			if(node.rchild==null){
				newnode.parent = node;
				node.rchild = newnode;
			}else{
				sort(node.rchild,newnode);
			}
		}
	}
}
创建二叉排序树的时候随便传入一个int型数组a[]
然后通过自顶向下的方式一个一个的将a[0]---a[n]个元素创建的节点类一个一个的拼接到树上
此后只需要再创建一个主函数类来调用便行了
public class Test {

	public static void main(String[] args) {
		int a[] = {100,35,3,44,212,453};
		Tree t = new Tree();
		TreeNode root = t.Build(a);
		t.Mprint(root);
	}

}
 

 这样便可通过创建二叉排序树并且中序遍历该二叉树的方式,来将一组混乱的数据整理成一组从小到大的数据了。

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics