二搜索叉树的查找主要涉及到查找指定的元素节点、最大最小值查找,查找指定节点的前驱节点或者后继节点。下面分别介绍。
查找指定元素
二搜索叉树查找一个给定值key的过程与二分查找很类似,其过程为:首先是关键字key与树根的关键字进行比较,如果key大比根的关键字大,则在根的右子树中查找,否则在根的左子树中查找,重复此过程,直到找到或遇到空结点为止,如下图就是查找key为2节点过程。
根据查找过程,下面给出了递归和非递归的代码实现如下:
//查找值为key的节点,递归版本Node* bstree_search(BSTree root, Type key){
if (root==NULL || root->key==key)
return root;
if (key < root->key)
return bstree_search(root->left, key);
else
return bstree_search(root->right, key)