二叉排序树介绍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(); } } }