P1827 [USACO3.4]美国血统 American Heritage 题解

题目传送门

一、理解与感悟

1、已知前序+中序,求后序

P1827 [USACO3.4]美国血统 American Heritage
https://www.luogu.com.cn/problem/P1827

思路:
(1)、二叉树的遍历,就是一个深度优先搜索的过程:
前序

void pre_order(int x){
 printf("%d\n",x);
 if(t[x].left) pre_order(t[x].left);
 if(t[x].right) pre_order(t[x].right);
}

中序

void in_order(int x){
 if(t[x].left) in_order(t[x].left);
 printf("%d\n",x);
 if(t[x].right) in_order(t[x].right);
}

后序

void post_order(int x){
 if(t[x].left) post_order(t[x].left);
 if(t[x].right) post_order(t[x].right);
 printf("%d\n",x);
}

说白了,套路基本一样,就是三步:输出当前结点,递归左子树,递归右子树。根据输出顺序不同,产生了三种遍历方式。

2、已知后序+中序,求前序

P1030 [NOIP2001 普及组] 求先序排列
https://www.luogu.com.cn/problem/P1030

上一篇:遇到RAID5阵列硬盘出现问题的情况该如何解决?


下一篇:你最喜欢的奥斯卡电影是哪部?