原题
Description
输入一串二叉树,输出其前序遍历。
Input
第一行为二叉树的节点数 𝑛n。(1≤n≤26)
后面 𝑛n 行,每一个字母为节点,后两个字母分别为其左右儿子。特别地,数据保证第一行读入的节点必为根节点。
空节点用 *
表示
Output
二叉树的前序遍历。
Sample 1
Input | Output |
---|---|
6 abc bdi cj* d** i** j** | abdicj |
题解
#include <iostream>
using namespace std;
struct {
char l; // 左孩子
char r; // 右孩子
}a[130];
void dfs(char c){ //先序遍历
if(c=='*') return ;
cout<<c;
dfs(a[c].l);
dfs(a[c].r);
}
int main(){
int n;
cin>>n;
char h1,h;
cin>>h1; //根节点,方便遍历
cin>>a[h1].l>>a[h1].r;
for(int i=2;i<=n;i++){
cin>>h;
cin>>a[h].l>>a[h].r;
}
dfs(h1);
return 0;
}