依次输入表(30,15,28,20,24,10,12,68,35,50,46,55)中的元素,生成一棵二叉排序树,要 1、试画出生成之后的二叉排序树。 2、对该二叉排序数作中根遍历,写出遍历序列。 3、c++编程构建一个二叉排序树,并中根遍历验证上述结果。
时间: 2023-08-28 11:05:13 浏览: 130
1. 生成的二叉排序树如下图所示:
```
30
/ \
15 68
/ \ \
10 20 80
/ \ /
24 28 35
/ / \
12 46 50
\
55
```
2. 中根遍历序列为:10 15 12 24 20 28 30 46 35 50 55 68 80
3. 下面是C++代码实现:
```c++
#include<iostream>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
void insert(TreeNode*& root, int val) {
if (root == NULL) {
root = new TreeNode(val);
return;
}
if (val < root->val) {
insert(root->left, val);
}
else {
insert(root->right, val);
}
}
void inorder(TreeNode* root) {
if (root == NULL) {
return;
}
inorder(root->left);
cout << root->val << " ";
inorder(root->right);
}
int main() {
int arr[] = { 30,15,28,20,24,10,12,68,35,50,46,55 };
int n = sizeof(arr) / sizeof(arr[0]);
TreeNode* root = NULL;
for (int i = 0; i < n; i++) {
insert(root, arr[i]);
}
inorder(root);
return 0;
}
```
输出结果为:10 15 12 24 20 28 30 46 35 50 55 68 80
阅读全文