P1305 新二叉树
题目描述
输入一串二叉树,输出其前序遍历。
输入格式
第一行为二叉树的节点数 n 。(1≤n≤26)
后面 n 行,每一个字母为节点,后两个字母分别为其左右儿子。
空节点用 * 表示
输出格式
二叉树的前序遍历。
题解
用了递归,就这样吧。
#include<iostream>
#include<string>
using namespace std;
int n;
string s[26];
void f(string a) {
cout << a[0]; //输出根节点
for (int i = 1; i < a.size(); i++) { //开始找儿子,i从1到a.size()即从左到右找
if (a[i] == '*') //如果儿子是'*',停止向下搜索
continue;
else { //否者,找以这个字符开头的字符串,找到了,就进入下一节递归
for (int j = 1; j < n; j++) {
if (s[j][0] == a[i])
f(s[j]);
}
}
}
}
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
cin >> s[i];
}
f(s[0]);
return 0;
}