输入一颗二叉树,输出其先序遍历的序列。
第1行为二叉树的节点数 n,后面的 n 行,以每一个字母为节点,后两个字母分别为其左、右孩子。空节点用 * 表示。
输出二叉树的先序序列。
输入样例
6
abc
bdi
cj*
d**
i**
j**
输出样例
abdicj
可用静态存储方式,存储每个节点的左、右孩子,然后按先序遍历顺序输出。
package tree;
import java.util.Scanner;
public class P1305 {
private static int root;
private static int l[] = new int[100];
private static int r[] = new int[100];
// 先序遍历
static void preorder(int t) {
if (t != '*' - 'a') {
System.out.print((char) ('a' + t));
preorder(l[t]);
preorder(r[t]);
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
for (int i = 0; i < n; i++) {
String s = scanner.next();
if (i == 0) {
root = s.charAt(0) - 'a';
}
l[s.charAt(0) - 'a'] = s.charAt(1) - 'a';
r[s.charAt(0) - 'a'] = s.charAt(2) - 'a';
}
preorder(root);
}
}
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/chengqiuming/article/details/125211784
内容来源于网络,如有侵权,请联系作者删除!