二叉搜索树有以下特点
二叉排序树或者是一棵空树,或者是具有下列性质的二叉树
(1)若左子树不空,则左子树上所有节点的值均小于它的根节点的值;
(2)若右子树不空,则右子树上所有节点的值均大于它的根节点的值;
(3)左、右子树也分别为二叉排序树;
(4)没有键值相等的节点。
Java实现
public class BinarySearchTree {
int data;
BinarySearchTree left;
BinarySearchTree right;
public BinarySearchTree(int data) {
this.data = data;
}
//插入节点
public void insert(BinarySearchTree root,int data) {
if(data>root.data) {
if(root.right == null) {
root.right = new BinarySearchTree(data);
}else {
insert(root.right, data);
}
}else {
if(root.left == null) {
root.left = new BinarySearchTree(data);
}else {
insert(root.left,data);
}
}
}
//中序遍历
public void mid(BinarySearchTree root){
if(root!=null) {
mid(root.left);
System.out.print(root.data+" ");
mid(root.right);
}
}
public static void main(String[] args) {
int[] a = new int[] {5,9,0,1,2,3,10};
BinarySearchTree root = new BinarySearchTree(a[0]);
for(int i = 1;i<a.length;i++) {
root.insert(root, a[i]);
}
System.out.println("中序遍历");//0 1 2 3 5 9 10 说明二叉搜索树的中序遍历是有序的
root.mid(root);
}
}