题目描述
输入一串二叉树,输出其前序遍历
输入格式
第一行为二叉树的节点数 nn。(1 \leq n \leq 261≤n≤26)
后面 nn 行,每一个字母为节点,后两个字母分别为其左右儿子。
空节点用
*
表示输出格式
二叉树的前序遍历。
一日双更!这道题没啥好说的,一道入门二叉树;
#include<bits/stdc++.h>
using namespace std;
int n,bj[400],root,bc[400];
struct mood{
char lc;
char rc;
}tree[400];
void dfs(char k){
cout<<k;
if(tree[k].lc!='*')
dfs(tree[k].lc);
if(tree[k].rc!='*')
dfs(tree[k].rc);
return;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
char a,b,c;
cin>>a>>b>>c;
bc[a]=bc[b]=bc[c]=1;
bj[b]=bj[c]=1;
tree[a].lc=b;
tree[a].rc=c;
}
for(int i='a';i<='z';i++)
if(bj[i]==0&&bc[i]==1)
root=i;
dfs(root);
return 0;
}