用c++写一段二叉排序树代码
时间: 2024-01-28 11:05:38 浏览: 88
二叉排序树C++代码
以下是用C++实现二叉排序树的示例代码:
```cpp
#include <iostream>
using namespace std;
//定义二叉排序树结点结构体
struct BSTNode {
int data;
BSTNode *left;
BSTNode *right;
};
//创建新结点
BSTNode* createNode(int data) {
BSTNode* newNode = new BSTNode();
newNode->data = data;
newNode->left = nullptr;
newNode->right = nullptr;
return newNode;
}
//插入结点
BSTNode* insertNode(BSTNode* root, int data) {
//如果根节点为空,直接插入
if (root == nullptr) {
root = createNode(data);
return root;
}
//如果待插入的数据小于根节点,插入到左子树中
if (data < root->data) {
root->left = insertNode(root->left, data);
}
//如果待插入的数据大于等于根节点,插入到右子树中
else {
root->right = insertNode(root->right, data);
}
return root;
}
//查找结点
BSTNode* findNode(BSTNode* root, int data) {
if (root == nullptr) {
return nullptr;
}
if (data == root->data) {
return root;
}
//如果待查找的数据小于根节点,查找左子树
if (data < root->data) {
return findNode(root->left, data);
}
//如果待查找的数据大于等于根节点,查找右子树
else {
return findNode(root->right, data);
}
}
//中序遍历二叉排序树
void inOrderTraversal(BSTNode* root) {
if (root == nullptr) {
return;
}
inOrderTraversal(root->left);
cout << root->data << " ";
inOrderTraversal(root->right);
}
int main() {
BSTNode* root = nullptr;
root = insertNode(root, 5);
insertNode(root, 3);
insertNode(root, 7);
insertNode(root, 1);
insertNode(root, 9);
insertNode(root, 4);
insertNode(root, 6);
cout << "中序遍历结果为:";
inOrderTraversal(root);
cout << endl;
BSTNode* node1 = findNode(root, 6);
if (node1 != nullptr) {
cout << "查找到结点:" << node1->data << endl;
}
BSTNode* node2 = findNode(root, 8);
if (node2 == nullptr) {
cout << "未找到结点" << endl;
}
return 0;
}
```
在上面的代码中,我们定义了一个二叉排序树结点结构体BSTNode,包括结点值data、左子节点指针left和右子节点指针right。createNode函数用来创建新结点,insertNode函数用来插入新结点,findNode函数用来查找指定值的结点,inOrderTraversal函数用来中序遍历二叉排序树。在主函数中,我们创建了一个二叉排序树,插入了若干个数据,并输出了中序遍历结果。
阅读全文