根据输入构造二叉树,输出该二叉树的先序序列。二叉树共有n个节点,节点编号是1到n。约定1号节点是根节点。
时间: 2023-04-29 08:00:23 浏览: 93
可以使用递归的方式构造二叉树,并输出先序序列。
具体步骤如下:
1. 定义一个结构体表示二叉树节点,包括节点编号、左子节点、右子节点。
2. 定义一个数组存储每个节点的左右子节点编号。
3. 定义一个递归函数,输入参数为当前节点编号,输出先序序列。
4. 在递归函数中,先输出当前节点编号,然后递归输出左子节点和右子节点。
5. 如果当前节点没有左子节点或右子节点,则直接返回。
6. 在主函数中,读入节点个数和每个节点的左右子节点编号,然后调用递归函数输出先序序列。
代码示例:
```c++
#include <iostream>
using namespace std;
const int MAXN = 1005;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
};
int n;
int leftChild[MAXN], rightChild[MAXN];
TreeNode* buildTree(int root) {
if (root == -1) return nullptr;
TreeNode* node = new TreeNode{root, nullptr, nullptr};
node->left = buildTree(leftChild[root]);
node->right = buildTree(rightChild[root]);
return node;
}
void preOrder(TreeNode* root) {
if (root == nullptr) return;
cout << root->val << " ";
preOrder(root->left);
preOrder(root->right);
}
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> leftChild[i] >> rightChild[i];
}
TreeNode* root = buildTree(1);
preOrder(root);
return ;
}
```
阅读全文