欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据结构 JAVA二叉树的简单实现

程序员文章站 2022-07-10 10:20:10
...
这是我第一次来上面些博客,唉  文档倒是积累了不少,但是全部都是放在本地的,无法发到网络上大家一起分享和找问题,正好这段时间重新看了看数据结构以及java 虚拟机等东西,因此写了几段代码,大家来看看有没有价值:

数据结构 二叉树:二叉树有多重使用的场景,但是最适合的场景是存储数字型的数据,然后有对数据排序的需求。排序有多重,但是使用二叉树的好处是对数据的写入已经是排序了的,然后获取的时候,只需要按照二叉树的数据机构的纹路获取就轻而易举的实现了,下面是代码,后面我可能会来修改的。

import java.util.Random;

/****
 * *
 * 类名称:		Tree.java 
 * 类描述:   		
 * 创建人:		
 * 创建时间:		2016-12-15上午11:16:00 
 * 修改人:		liuxing
 * 修改时间:		2016-12-15上午11:16:00 
 * 修改备注:   		Tree:二叉树,它具体二叉树所有的特性。同时红黑树更是一颗自平衡的排序二叉树,二叉树的特点就是:
 * 					即树中的任何节点的值大于它的左子节点,且小于它的右子节点。按照这个基本性质使得树的检索效率大大提高
 * 					我们知道在生成二叉树的过程是非常容易失衡的,最坏的情况就是一边倒(只有右/左子树),这样势必会导致二叉树的检索效率大大降低(O(n)),所以为了维持二叉树的平衡,大牛们提出了各种实现的算法
 * 
 * 				以下是二叉树最简单的实现
 * @version
 */
public class Tree {
	
	private static TreeNode root = new TreeNode() ;
		
	public static void put( int info ){
		compare(root, info) ;
	}
	
	/***
	 * 简单二叉树的数据结构
	 * @param node
	 * @param info
	 * @return
	 */
	private static TreeNode compare( TreeNode node,int info ){
		if( node == null || node.getBase() == null ){
			if( node == null ){
				node = new TreeNode() ;
			}
			node.setBase( info ) ;
		}else if( node.getBase() > info ){			//将小于的置于左边
			TreeNode left = compare( node.getLeft(), info) ;
			node.setLeft( left ) ;
		}else if( node.getBase() < info || node.getBase().equals( info ) ){		//将大于等于的置于右边
			TreeNode right = compare( node.getRight(), info) ;
			node.setRight(right) ;
		}
		return node ;
	}
	
	/****
	 * 简单二叉树的数据排序
	 * @param node
	 */
	private static void sort( TreeNode node ){
		if( node == null ){
			return ;
		}else if( node.getBase() != null ){
			if( node.getLeft() != null ){
				sort(  node.getLeft() ) ;
			}
			System.out.println( node.getBase() );
			if( node.getRight() != null ){
				sort(  node.getRight() ) ;
			}
		}
	}
	

	public static void main(String[] args) {
		int i = 0 ;
		while(i < 4){
			int mark = new Random().nextInt( 100 ) ;
			Tree.put( mark ) ;
			i++ ;
		}
		sort( root ) ;
	}
	
}
class TreeNode{
	
	private Integer base ;
	protected TreeNode right ;
	protected TreeNode left ;
	
	
	public TreeNode getRight() {
		return right;
	}
	public void setRight(TreeNode right) {
		this.right = right;
	}
	public TreeNode getLeft() {
		return left;
	}
	public void setLeft(TreeNode left) {
		this.left = left;
	}
	public Integer getBase() {
		return base;
	}
	public void setBase(Integer base) {
		this.base = base;
	}
	
}