3.29总结

终于阿卡一次了[感动.png]

T1 U548155 树上问题专题-找树根和孩子

由于要找根与找孩子,同时使用父亲表示与邻接表表示
注意:邻接表使用时求size是无符号,不能与有符号去比较,建议另存入另一个变量
image

T2 U548451 树上问题专题-中、后序遍历求前序遍历

中序遍历与后序遍历是一样的,只是中序遍历的顺序是{左儿子,父亲,右儿子},后序遍历是{左儿子,右儿子,父亲}
写出上面的图的前中后序遍历:

先序:1,3,5,2,4
中序:5,3,2,1,4
后序:5,2,3,4,1

可以发现一个规律,先序的第一个与后序的最后一个都是根,而中序的根左边右边分别是左右子树的中序遍历

那么这一题就用后序遍历不断求根,在中序中找到根,分出左右子树,在递归即可
样例分析:

BADC
BDCA

后序遍历求根:A,输出
中序遍历中找到A在2的位置,得A左子树为B,右子树为DC
后序遍历的左子树是一样的从1到2-1的位置,即B,而右子树则是2+1~长度-1的位置,即DC
遍历左子树B,后序遍历求根:B,输出
中序遍历空了,返回
遍历右子树DC,得到根:C,输出
中序遍历中找到C在2的位置,得C左子树为D
后序遍历的左子树是一样的从1到2-1的位置,即D
遍历左子树D,得到根:D,输出
中序遍历空了,返回
C无右子树,返回
结束
image

T3 U548396 树上问题专题-查找二叉树

题目描述比较抽象,大概这个意思
给你一颗二叉树,再给定一个值,求权值为这个值的点在这棵树的中序遍历中是第几个被遍历到的
输入方式:第一行是节点数,第二行是给定的值,接下来有n(节点数)行,第i行表示第i个节点,第1个数是权值,接下来两个数分别是左右孩子
了解题意后代码就很简单了image

T4 U548420 树上问题专题-FBI树

首先,因为字符串长度为n,所以要存贮每一个点就要用\(2^n\)个位置,首先判断叶子结点,在判断每个节点的左右孩子是否相同即可
image

T5 U548436 树上问题专题-扩展二叉树

个人赛时思路比较玄学,首先观察阳历:
ABD..EF..G..C..
可以发现,作为根,左孩子一定是右边的字母,直到为'.'的时候,就返回一层找右孩子,在遍历过程中,将每个位置标号,找右孩子的过程就是找这个位置右边第一个没有被遍历过的点
将就着看吧
image

T6 U548442 树上问题专题-对称二叉树

递归判断每个根的左右孩子,每次检查是否有孩子,孩子权值是否一样,同时,既然要对称,则递归时判断的是左孩子的左孩子,右孩子的右孩子与左孩子的右孩子,右孩子的左孩子
同时dfs求子树和
image

posted @ 2025-03-30 19:58  KK_SpongeBob  阅读(18)  评论(0)    收藏  举报