设计递归算法,将关键字序列{39,11,68,46,75,23,71,8,86,34}构造成一棵二叉排序树,完整代码
时间: 2023-07-27 17:30:03 浏览: 80
以下是使用递归算法构造二叉排序树的完整代码:
```c++
#include <iostream>
using namespace std;
// 定义二叉树结点
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 插入二叉排序树结点
void insertNode(TreeNode*& root, int val) {
if (!root) {
root = new TreeNode(val);
return;
}
if (val < root->val) {
insertNode(root->left, val);
} else {
insertNode(root->right, val);
}
}
// 构造二叉排序树
TreeNode* buildBST(int arr[], int n) {
TreeNode* root = NULL;
for (int i = 0; i < n; i++) {
insertNode(root, arr[i]);
}
return root;
}
// 中序遍历
void inorderTraversal(TreeNode* root) {
if (!root) {
return;
}
inorderTraversal(root->left);
cout << root->val << " ";
inorderTraversal(root->right);
}
int main() {
int arr[] = {39, 11, 68, 46, 75, 23, 71, 8, 86, 34};
int n = sizeof(arr) / sizeof(arr[0]);
// 构造二叉排序树
TreeNode* root = buildBST(arr, n);
// 中序遍历
inorderTraversal(root);
return 0;
}
```
输出结果为:
```
8 11 23 34 39 46 68 71 75 86
```
阅读全文