package hello;public class BinaryTree { private Node root; public BinaryTree() { this.root = null; } public void insert(int data) { root=insert(root, data); } private Node insert(Node node, int data) { if (node == null) { node = new Node(data); }else{ if(data <= node.data) { node.left = insert(node.left, data); } else { node.right = insert(node.right, data); } } return node; } public void buildTree(int[] data) { for (int i = 0; i < data.length; i++) { insert(data[i]); } } public void print(){ printNode(root); System.out.println(); } private void printNode(Node node){ if(node==null) return; printNode(node.left); System.out.print(node.data+"*****"); printNode(node.right); } public static void main(String[] args) { int[] data = { 8, 1, 7, 8, 5, 6, 4, 8, 9, 3, 0, 2 }; BinaryTree tree=new BinaryTree(); tree.buildTree(data); tree.print(); }}class Node { Node left; Node right; int data; public Node(int data) { this.left=null; this.right=null; this.data = data; }}
二叉排序树的定义 :
二叉排序树(Binary Sort Tree)又称二叉查找(搜索)树(Binary Search Tree)。其定义为:二叉排序树或者是空树,或者是满足如下性质的二叉树:①若它的左子树非空,则左子树上所有结点的值均小于根结点的值;②若它的右子树非空,则右子树上所有结点的值均大于根结点的值;③左、右子树本身又各是一棵二叉排序树。 上述性质简称二叉排序树性质(BST性质),故二叉排序树实际上是满足BST性质的二叉树。