建立一棵二叉树,从键盘接收先序遍历的输入,以二叉链表作为存储结构,建立二叉树(以先序来建立),并采用递归算法对其进行遍历(中序),将遍历结果打印输出。给出完整代码
时间: 2023-06-26 15:09:02 浏览: 172
各种二叉树的数据结构.rar_二叉树_二叉树 遍历_实现二叉树的先、中、后序递归遍历算_数据结构_数据结构 算法
以下是完整的代码实现:
```c++
#include <iostream>
using namespace std;
// 定义二叉树结构体
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 递归建立二叉树
void buildTree(TreeNode*& root) {
int val;
cin >> val; // 从键盘输入节点值
if (val == -1) { // -1 表示空节点
root = NULL;
} else {
root = new TreeNode(val);
buildTree(root->left);
buildTree(root->right);
}
}
// 中序遍历并打印输出
void inorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
inorderTraversal(root->left);
cout << root->val << " ";
inorderTraversal(root->right);
}
int main() {
cout << "请输入先序遍历序列,空节点用 -1 表示:" << endl;
TreeNode* root;
buildTree(root); // 建立二叉树
cout << "中序遍历结果为:" << endl;
inorderTraversal(root); // 中序遍历并打印输出
return 0;
}
```
使用示例:
输入:
```
请输入先序遍历序列,空节点用 -1 表示:
1 2 -1 -1 3 4 -1 -1 5 -1 -1
```
输出:
```
中序遍历结果为:
2 1 4 3 5
```
阅读全文