七大经常使用排序算法——二叉树排序实现

 

二叉排序树介绍java

二叉排序树又称二叉查找树(Binary Sort Tree / Binary Search Tree),简单的说就是数据的存放要符合原则:左边的节点要小于根节点,右边的节点要大于根节点,尽可能避免相同(相同则左右放均可)。node


学习二叉排序树,实现“”增删改查“”都可以很高效率的完成。数组

 

实现思路:ide

    一、建立结点Node(定义三个变量、一个添加方法、一个中序遍历方法(先后排序出来的 结果不是有序的))
    
    二、建立二叉树(定义一个根节点、添加添加方法、添加遍历方法)
    
    三、建立实例、循环递归添加数组、使用中序遍历方法输出post

 

测试代码:学习

public class BinarySortTree {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int arr [] = {2,5,3,7,4,8,9,1,0};
		BinaryTree binaryTree = new BinaryTree();
		
		//递归添加数组
		for(int i = 0; i < arr.length; i++) {
			binaryTree.add(new TreeNode(arr[i]));
		}
		
		//遍历输出
		System.out.println("中序遍历输出~~");
		binaryTree.postOrder();
		
	}

}
//建立二叉树
class BinaryTree{
	
	private TreeNode root;
	
//	public BinaryTree(Node root) {
//		this.root = root;
//	}

	//添加方法
	public void add(TreeNode node) {
		if(root == null) {
			root = node;
		} else {
			this.root.add(node);
		} 
	}
	
	//遍历方法
	public void postOrder() {
		if(root != null) {
			this.root.postOrder();
		} else {
			System.out.println("二叉树为空,没法遍历排序");
		}
	}
}


//建立节点
class TreeNode{
	private int value;
	private TreeNode left;
	private TreeNode right;
	
	public TreeNode(int value) {
		this.value = value;
	}
	
	@Override
	public String toString() {
		return "TreeNode [value=" + value + "]";
	}

	//添加方法
	public void add(TreeNode node) {
		//判断传入的值和当前节点的值的关系
		//若是传入的值为空,则直接返回
		if(node == null) {
			return;
		}
		//若是传入的值小于当前的值
		if(node.value < this.value) {
			//判断当前节点的左子数是否为空,为空则将小于当前节点的值放置在左节点
			if(this.left == null) {
				this.left = node;
			//若当前节点的左子结点不为空,则提柜判断左子树
			} else {
				this.left.add(node);
			}
		//若是传入的值不小于当前的值,就表示大于或等于当前的值,则将其添加到当前节点的右边
		} else {
			if(this.right == null) {
				this.right = node;
			} else {
				this.right.add(node);
			}
		}
	}
	
	//后序遍历
	public void postOrder() {
		
		if(this.left != null) {
			this.left.postOrder();
		}
		System.out.println(this);
		if(this.right != null) {
			this.right.postOrder();
		}
		
	}
}
相关文章
相关标签/搜索