构造二叉排序树c++
时间: 2023-11-19 22:56:16 浏览: 80
C++做的二叉排序树
构造二叉排序树是一种常见的数据结构,它是一棵空树或者具有以下性质的二叉树:
1.若左子树不为空,则左子树上所有节点的值均小于它的根节点的值。
2.若右子树不为空,则右子树上所有节点的值均大于它的根节点的值。
3.左、右子树也分别为二叉排序树。
以下是一个C++实现的构造二叉排序树的示例代码:
```
#include <iostream>
using namespace std;
struct node {
int data;
node *left;
node *right;
node(int x) : data(x), left(NULL), right(NULL) {}
};
class CBTree {
public:
node *root;
CBTree() : root(NULL) {}
~CBTree() {}
void NodeAdd(node *&Root, int Data) {
if (Root == NULL) {
Root = new node(Data);
return;
}
if (Data < Root->data) {
NodeAdd(Root->left, Data);
} else if (Data > Root->data) {
NodeAdd(Root->right, Data);
}
}
bool NodeSearch(node *Root, int Data) {
if (Root == NULL) {
return false;
}
if (Data == Root->data) {
return true;
} else if (Data < Root->data) {
return NodeSearch(Root->left, Data);
} else {
return NodeSearch(Root->right, Data);
}
}
};
int main() {
int i, a;
CBTree Btree;
node *Root = Btree.root;
for (i = 0; i < 10; i++) {
cin >> a;
while (Btree.NodeSearch(Root, a)) {
cout << "已存在,请重新输入" << endl;
cin >> a;
}
Btree.NodeAdd(Root, a);
}
return 0;
}
```
阅读全文