怎么用c++写一个二叉搜索树
时间: 2023-08-10 18:05:23 浏览: 143
以下是一个简单的 C++ 代码示例,用于实现二叉搜索树:
```cpp
#include <iostream>
using namespace std;
// 定义二叉搜索树节点
struct BSTNode {
int data;
BSTNode* left;
BSTNode* right;
};
// 创建新节点
BSTNode* createNode(int value) {
BSTNode* newNode = new BSTNode();
newNode->data = value;
newNode->left = nullptr;
newNode->right = nullptr;
return newNode;
}
// 插入节点
BSTNode* insertNode(BSTNode* root, int value) {
if (root == nullptr) {
root = createNode(value);
return root;
}
else if (value <= root->data) {
root->left = insertNode(root->left, value);
}
else {
root->right = insertNode(root->right, value);
}
return root;
}
// 查找节点
bool searchNode(BSTNode* root, int value) {
if (root == nullptr) {
return false;
}
if (root->data == value) {
return true;
}
else if (value < root->data) {
return searchNode(root->left, value);
}
else {
return searchNode(root->right, value);
}
}
// 打印二叉搜索树(中序遍历)
void printTree(BSTNode* root) {
if (root == nullptr) {
return;
}
printTree(root->left);
cout << root->data << " ";
printTree(root->right);
}
int main() {
// 创建根节点
BSTNode* root = nullptr;
// 插入节点
root = insertNode(root, 8);
root = insertNode(root, 3);
root = insertNode(root, 10);
root = insertNode(root, 1);
root = insertNode(root, 6);
root = insertNode(root, 14);
root = insertNode(root, 4);
root = insertNode(root, 7);
root = insertNode(root, 13);
// 打印二叉搜索树
cout << "二叉搜索树: ";
printTree(root);
cout << endl;
// 查找节点
int value = 6;
if (searchNode(root, value)) {
cout << value << " 在二叉搜索树中" << endl;
}
else {
cout << value << " 不在二叉搜索树中" << endl;
}
return 0;
}
```
以上代码创建了一个二叉搜索树,并实现了插入节点、查找节点和打印二叉搜索树等基本操作。
阅读全文