3 二叉排序树
二叉排序树相对于动态查找(也就是查找过程中需要插入或删除),对于有序表来讲,查找确实有着较高的效率,但是,一旦需要对表中的元素进行插入删除操作时,效率就变得很低。基于这种思想,二叉排序树被提出来了。这是一种查找效率等于有序表,同时删除查找效率又高于有序表的一种存储结构。
二叉树的数据结构我们已经在之前学习过了。下面简单贴出代码:
/*二叉排序树的存储结构,也就是二叉树的结构*/
typedef struct BiTNode
{
int data;
struct BiTNode *lchild, *rchild;
}BiTNode,*BiTree;
好,那我们如今有了二叉排序树的存储结构了,先来完成二叉排序树的查找功能。也就是说我们先假设已经建成了一个二叉排序树,我们已经知道了二叉树的递归遍历,那接下来的查找功能,也就很容易实现了。
Status SearchBST(BiTree T, int key, BiTree f, BiTree *p)
{
if(!T) //查找不成功
{
*p = f;
return FALSE;
}
else if( key == T->data) //查找成功
{
*p = T;