c++二叉排序树的建立
时间: 2023-06-27 08:02:52 浏览: 108
用C++实现的二叉排序树
二叉排序树(Binary Search Tree,BST)也称为二叉查找树,是一种特殊的二叉树,它的左子树中所有结点的值都小于根结点的值,右子树中所有结点的值都大于根结点的值,因此它具有很好的查找性能。
在 C++ 中可以通过结构体或类来实现二叉排序树的建立。下面是一个使用类来实现二叉排序树的例子:
```c++
#include <iostream>
using namespace std;
// 定义二叉排序树的结点
class BSTNode {
public:
int data; // 结点的数据
BSTNode* left, *right; // 左右子树指针
BSTNode(int data) {
this->data = data;
left = right = nullptr;
}
};
// 插入结点
BSTNode* insert(BSTNode* root, int data) {
if (!root) { // 如果树为空,则新建一个结点
return new BSTNode(data);
}
if (data < root->data) { // 如果比根结点小,则插入到左子树中
root->left = insert(root->left, data);
}
else { // 否则插入到右子树中
root->right = insert(root->right, data);
}
return root;
}
// 中序遍历输出
void inorder(BSTNode* root) {
if (!root) {
return;
}
inorder(root->left);
cout << root->data << " ";
inorder(root->right);
}
int main() {
BSTNode* root = nullptr;
root = insert(root, 5);
insert(root, 2);
insert(root, 7);
insert(root, 1);
insert(root, 4);
insert(root, 6);
insert(root, 8);
inorder(root); // 输出结果为: 1 2 4 5 6 7 8
return 0;
}
```
在上面的例子中,我们定义了一个 `BSTNode` 类表示二叉排序树的结点,其中包含结点的数据、左子树和右子树指针。使用 `insert` 函数向树中插入新的结点,如果树为空,则新建一个结点;如果插入的数据比根结点小,则插入到左子树中;否则插入到右子树中。最后通过 `inorder` 函数对树进行中序遍历输出。
阅读全文