题目描述
现有一棵n个结点的二叉树(结点编号为从0
到n-1
,根结点为0
号结点),求这棵二叉树的中序遍历序列。
输入描述
第一行一个整数n(1≤n≤50),表示二叉树的结点个数;
接下来n行,每行一个结点,按顺序给出编号从0
到n-1
的结点的左子结点编号和右子结点编号,中间用空格隔开。如果不存在对应的子结点,那么用-1
表示。
输出描述
输出n个整数,表示中序遍历序列,中间用空格隔开,行末不允许有多余的空格。
输入样例
6 2 5 -1 -1 1 4 -1 -1 -1 -1 -1 3
输出样例
1 2 4 0 5 3
代码:
#include<bits/stdc++.h>
using namespace std;
struct Node{int l,r;
}node[1005];
vector<int> in;void inorder(int root){if(root==-1){return;}inorder(node[root].l);in.push_back(root);inorder(node[root].r);
}
int main(){int n;cin>>n;for(int i = 0;i<n;i++){cin>>node[i].l>>node[i].r;}inorder(0);for(int i = 0;i<in.size();i++){cout<<in[i];if(i!=in.size()-1){cout<<" ";}}
}