5.5.1 二叉排序树(BST)
1.二叉排序树定义 2.1查找 2.2插入 2.3删除 3.查找效率分析
1.二叉排序树定义
二叉排序树,又称二叉查找树(BST,Binary Search Tree)
满足性质:左子树结点值<根结点值<右子树结点值
即,进行中序遍历,可以得到一个递增的有序序列。
可以用于元素的有序组织、搜索。
//二叉排序树结点
typedef struct BSTNode{
int key;
struct BSTNode *lchild,*rchild;
}BSTNode,*BSTree;
2.1二叉排序树的查找
//在二叉排序树中查找值为key的结点
BSTNode *BST_Search(BSTree T,int key){
while(T!=NULL&&key!=T->key){ //树空或者等于根结点值,则结束循环
if(key<T->key) T=T->lchild; //小于,则在左子树上查找
else T=T->rchild; //大于,则在右子树上查找
}
return T;
}
上述复杂度为O(1);
也可以使用递归实现;但最坏的空间复杂度为O(n)
2.2二叉排序树的插入
若原二叉排序树为空,则直接插入;否则,需要先查找插入的位置。
//在二叉排序树插入关键字为k的新结点ÿ