用C++编写,依次给出n(O<n<100000)个整数,请你以这n个数创建一棵二叉排序树,这棵排序树的根节点为第一个数,并输出其中序遍历和后序遍历。
时间: 2024-12-21 07:31:40 浏览: 7
在C++中,你可以通过递归的方式创建二叉排序树并进行中序和后序遍历。首先,我们需要定义一个二叉搜索树的结构体或类(比如`TreeNode`),然后实现插入节点、中序遍历和后序遍历的函数。
```cpp
#include <iostream>
using namespace std;
// 定义二叉搜索树节点
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
// 插入节点到BST
TreeNode* insertIntoBST(TreeNode* root, int val) {
if (!root) return new TreeNode(val);
if (val < root->val) root->left = insertIntoBST(root->left, val);
else root->right = insertIntoBST(root->right, val);
return root;
}
// 中序遍历
void inorderTraversal(TreeNode* root) {
if (root == nullptr) return;
inorderTraversal(root->left);
cout << root->val << " ";
inorderTraversal(root->right);
}
// 后序遍历
void postorderTraversal(TreeNode* root) {
if (root == nullptr) return;
postorderTraversal(root->left);
postorderTraversal(root->right);
cout << root->val << " ";
}
int main() {
int n;
cin >> n; // 输入数字的数量
int arr[n]; // 存储输入的整数
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
TreeNode* root = nullptr;
root = insertIntoBST(root, arr[0]); // 使用数组的第一个元素作为根节点
cout << "中序遍历结果: ";
inorderTraversal(root); // 输出中序遍历的结果
cout << endl;
cout << "后序遍历结果: ";
postorderTraversal(root); // 输出后序遍历的结果
cout << endl;
return 0;
}
```
运行此程序,会先读取n个整数,然后构建二叉排序树,并分别打印出中序和后序遍历的结果。
阅读全文