用c++依次输入表(30, 15, 28,20,24, 10, 12,68,35,50,46,55)中的元素,生成一棵二叉排序树,要 求: 1、试画出生成之后的二叉排序树。 2、对该二叉排序数作中根遍历,写出遍历序列。 3、编程构建一个二叉排宇树,并中根遍历验证上述结果。
时间: 2024-02-20 19:56:57 浏览: 51
以下是 C++ 代码实现:
```c++
#include <iostream>
using namespace std;
// 定义二叉排序树的节点
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 将元素插入二叉排序树
TreeNode* insert_node(TreeNode* root, int val) {
if (!root) {
return new TreeNode(val);
}
if (val < root->val) {
root->left = insert_node(root->left, val);
} else if (val > root->val) {
root->right = insert_node(root->right, val);
}
return root;
}
// 中根遍历二叉排序树
void inorder_traversal(TreeNode* root) {
if (!root) {
return;
}
inorder_traversal(root->left);
cout << root->val << ' ';
inorder_traversal(root->right);
}
int main() {
int nums[] = {30, 15, 28, 20, 24, 10, 12, 68, 35, 50, 46, 55};
int n = sizeof(nums) / sizeof(nums[0]);
// 生成二叉排序树
TreeNode* root = NULL;
for (int i = 0; i < n; i++) {
root = insert_node(root, nums[i]);
}
// 中根遍历二叉排序树
inorder_traversal(root); // 输出:10 12 15 20 24 30 35 46 50 55 68
return 0;
}
```
注意:此代码仅供参考,不保证在所有情况下都能正确运行。
阅读全文