题目描述
输入一串二叉树,用遍历前序打出。
输入输出格式
输入格式:
第一行为二叉树的节点数n。(
n≤26n \leq 26
n≤26 )
后面n行,每一个字母为节点,后两个字母分别为其左右儿子。
空节点用*表示
n≤26n \leq 26
n≤26 )
后面n行,每一个字母为节点,后两个字母分别为其左右儿子。
空节点用*表示
输出格式:
前序排列的二叉树
输入输出样例
输入样例#1:
6
abc
bdi
cj*
d**
i**
j**
输出样例#1
abdicj
代码:
输入样例#1:
6
abc
bdi
cj*
d**
i**
j**
输出样例#1
abdicj
代码:
#include<bits/stdc++.h> using namespace std; char a[30][3]; int n; void dfs(char c) { if(c!='*') { cout<<c;//第一个输入的必定是根节点 for(int i=1;i<=n;i++) { if(a[i][0]==c) //如果是下一个节点的父亲结点,则递归输出左孩子 { dfs(a[i][1]); dfs(a[i][2]);//递归右孩子 } } } return; } int main() { cin>>n; for(int i=1;i<=n;i++) cin>>a[i][0]>>a[i][1]>>a[i][2]; dfs(a[1][0]); return 0; }