|
算法 9.5
bool SearchBST (BSTree T,
KeyType kval, BSTree f,
BSTree &p
)
{
//
根指针T所指二叉查找树中递归查找关键字等于kval的数据元素,若查找成
// 功,则指针p指向该数据元素结点,并返回TRUE,否则指针p指向查找路径上访
// 问的最后一个结点并返回FALSE,指针f指向T的双亲,其初始调用值为NULL
if (!T) { p = f; return FALSE; } //
查找不成功
else if ( key == T->data.key )
{ p = T; return TRUE; } //
查找成功
else if ( key < T->data.key )
return SearchBST (T->lchild, key, T, p
);
// 返回在左子树中继续查找所得结果
else return SearchBST (T->rchild, key, T,
p );
// 返回在右子树中继续查找所得结果
} // SearchBST |
|
需要注意的是,算法中的引用参数指针 p 在算法结束时的状态。若查找成功,即二叉查找树中存在等于给定值的关键字,则 p 指向该关键字所在结点,正如学员在上页的演示中所看到的;若查找不成功,则
p 应该指向查找路径上最后一个结点。请看下列演示例子。 |
|