下面是一个简单的C++实现二叉搜索树的示例:
#include <iostream>
class TreeNode {
public:
int key;
TreeNode* left;
TreeNode* right;
TreeNode(int k) : key(k), left(nullptr), right(nullptr) {}
};
class BST {
private:
TreeNode* root;
// 插入辅助函数
TreeNode* insertHelper(TreeNode* node, int key) {
if (node == nullptr) {
return new TreeNode(key);
}
if (key < node->key) {
node->left = insertHelper(node->left, key);
} else {
node->right = insertHelper(node->right, key);
}
return node;
}
// 查找辅助函数
bool searchHelper(TreeNode* node, int key) {
if (node == nullptr) {
return false;
}
if (key == node->key) {
return true;
}
if (key < node->key) {
return searchHelper(node->left, key);
} else {
return searchHelper(node->right, key);
}
}
public:
BST() : root(nullptr) {}
// 插入操作
void insert(int key) {
root = insertHelper(root, key);
}
// 查找操作
bool search(int key) {
return searchHelper(root, key);
}
};
int main() {
BST bst;
// 插入一些元素
bst.insert(5);
bst.insert(3);
bst.insert(7);
// 查找元素
std::cout << "Is 3 in the BST? " << std::boolalpha << bst.search(3) << std::endl;
std::cout << "Is 6 in the BST? " << std::boolalpha << bst.search(6) << std::endl;
return 0;
}
在这个示例中,TreeNode 类表示二叉搜索树中的节点,包含了一个关键字属性以及左右子节点的指针。BST 类表示二叉搜索树本身,包含了一个指向根节点的指针。insert() 方法用于插入一个元素到二叉搜索树中,search() 方法用于查找一个元素是否在二叉搜索树中。在插入操作中,通过递归的方式按照二叉搜索树的性质插入新的节点。