以下是一个C++实现的二叉查找树(Binary Search Tree, BST)的基本示例,包括插入和遍历(中序遍历)功能。请注意,这个示例仅用于演示目的,并且没有包括删除节点、查找最大值、最小值等高级功能。
#include <iostream>
using namespace std;
// 定义二叉树节点结构体
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
// 定义二叉查找树类
class BinarySearchTree {
public:
TreeNode* root;
BinarySearchTree() : root(nullptr) {}
// 插入新值
void insert(int val) {
root = insertRec(root, val);
}
// 递归插入
TreeNode* insertRec(TreeNode* node, int val) {
if (node == nullptr) {
return new TreeNode(val);
}
if (val < node->val) {
node->left = insertRec(node->left, val);
} else if (val > node->val) {
node->right = insertRec(node->right, val
); }
return node;
}
// 中序
遍历
void inorderTraversal(TreeNode* node) {
if (node == nullptr) {
return;
}
inorderTraversal(node->left);
cout << node->val << " ";
inorderTraversal(node->right);
}
};
// 主函数示例
int main() {
BinarySearchTree bst;
// 插入元素
bst.insert(50);
bst.insert(30);
bst.insert(20);
bst.insert(40);
bst.insert(70);
bst.insert(60);
bst.insert(80);
// 中序遍历
cout << "Inorder traversal of BST: ";
bst.inorderTraversal(bst.root);
cout << endl;
return 0;
}
这段代码首先定义了一个`TreeNode`结构体来表示二叉树的节点,然后定义了一个`BinarySearchTree`类来封装二叉查找树的基本操作。在`BinarySearchTree`类中,我们实现了插入节点(`insert`和`insertRec`)和中序遍历(`inorderTraversal`)的功能。最后,在`main`函数中,我们创建了一个`BinarySearchTree`对象,并插入了一些示例值,然后执行了中序遍历以打印出树中的元素。
请注意,这个示例仅用于教学目的,并假设您已经对C++有一定的了解。在实际应用中,您可能需要根据具体需求对二叉查找树进行更多的扩展和优化。