C++根据二叉排序树的抽象数类型确定义,使用链接表示实现一个二叉排序树。二叉排序树的基础功能: 1、建立 2、查找 3、插入 4、删除 5、销毁 编写测试main()函数测试算法的正确性。
时间: 2024-01-12 13:04:13 浏览: 89
好的,以下是根据您的要求实现的C++代码:
```cpp
#include <iostream>
using namespace std;
// 二叉排序树的节点结构体
struct BSTNode {
int data; // 节点值
BSTNode* left; // 左子树指针
BSTNode* right; // 右子树指针
};
// 建立二叉排序树
void BSTInsert(BSTNode*& root, int value) {
if (root == NULL) {
root = new BSTNode;
root->data = value;
root->left = NULL;
root->right = NULL;
} else if (value < root->data) {
BSTInsert(root->left, value);
} else {
BSTInsert(root->right, value);
}
}
// 查找二叉排序树
bool BSTSearch(BSTNode* root, int value) {
if (root == NULL) {
return false;
} else if (value == root->data) {
return true;
} else if (value < root->data) {
return BSTSearch(root->left, value);
} else {
return BSTSearch(root->right, value);
}
}
// 删除二叉排序树的节点
bool BSTDelete(BSTNode*& root, int value) {
if (root == NULL) {
return false;
} else if (value == root->data) {
if (root->left == NULL && root->right == NULL) {
delete root;
root = NULL;
} else if (root->left == NULL) {
BSTNode* temp = root;
root = root->right;
delete temp;
} else if (root->right == NULL) {
BSTNode* temp = root;
root = root->left;
delete temp;
} else {
BSTNode* temp = root->right;
while (temp->left != NULL) {
temp = temp->left;
}
root->data = temp->data;
BSTDelete(root->right, temp->data);
}
return true;
} else if (value < root->data) {
return BSTDelete(root->left, value);
} else {
return BSTDelete(root->right, value);
}
}
// 销毁二叉排序树
void BSTDestroy(BSTNode*& root) {
if (root != NULL) {
BSTDestroy(root->left);
BSTDestroy(root->right);
delete root;
root = NULL;
}
}
// 测试函数
void BSTTest() {
BSTNode* root = NULL;
// 测试插入
BSTInsert(root, 10);
BSTInsert(root, 5);
BSTInsert(root, 15);
BSTInsert(root, 3);
BSTInsert(root, 7);
BSTInsert(root, 12);
BSTInsert(root, 18);
// 测试查找
cout << "Search 7: " << BSTSearch(root, 7) << endl;
cout << "Search 13: " << BSTSearch(root, 13) << endl;
// 测试删除
cout << "Delete 10: " << BSTDelete(root, 10) << endl;
cout << "Delete 13: " << BSTDelete(root, 13) << endl;
// 测试销
阅读全文