cpp-interview/Algorithm/BSTSearch.h

30 lines
1002 B
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
二叉搜索树的查找算法:
在二叉搜索树b中查找x的过程为
1. 若b是空树则搜索失败否则
2. 若x等于b的根节点的数据域之值则查找成功否则
3. 若x小于b的根节点的数据域之值则搜索左子树否则
4. 查找右子树。
*/
// 在根指针T所指二叉查找树中递归地查找其关键字等于key的数据元素若查找成功
// 则指针p指向該数据元素节点并返回TRUE否则指针指向查找路径上访问的最终
// 一个节点并返回FALSE指针f指向T的双亲其初始调用值为NULL
Status SearchBST(BiTree T, KeyType key, BiTree f, BiTree &p){
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);
}