用BinarySearchTree.h结构在二叉排序树中收索以key为关键码的节点
时间: 2024-05-10 19:19:15 浏览: 63
在 BinarySearchTree.h 中,我们可以通过以下代码来实现在二叉排序树中搜索以 key 为关键码的节点:
```
template<typename T>
BinaryNode<T>* BinarySearchTree<T>::find(const T& key) const {
BinaryNode<T>* current = root;
while (current != nullptr) {
if (key < current->element)
current = current->left;
else if (key > current->element)
current = current->right;
else // key == current->element
return current;
}
return nullptr; // key not found
}
```
在这个方法中,我们首先将根节点赋值给 current,然后进入一个 while 循环,在循环中不断更新 current 的值,直到找到了以 key 为关键码的节点或者遍历到了叶子节点。
在循环中,我们通过比较 key 和 current->element 的大小关系,来决定是向左子树还是右子树前进。如果 key 小于 current->element,则说明要在左子树中搜索;如果 key 大于 current->element,则说明要在右子树中搜索。如果 key 等于 current->element,则说明已经找到了以 key 为关键码的节点,直接返回 current。
如果循环结束后仍然没有找到以 key 为关键码的节点,则说明该节点不存在于二叉排序树中,返回 nullptr。
阅读全文