图论题目做题笔记
二叉树,树的直径,LCA 等
1. P1229 遍历问题
好题。
考虑什么时候前序和中序一样,但是可能有多种二叉树。
不难发现,当一个结点只有一个儿子的时候,不知道这是左儿子还是右儿子,那么就会产生问题。根据乘法原理,假设有 \(x\) 个结点只有一个儿子,那么答案就是 \(2^x\)。
然后考虑怎么算。前序遍历是根左右,后序遍历是左右根。那么可以找到规律:如果能找到一个 \(i\) 和一个 \(j\),使得 \({s_1}_i={s_2}_j\),且 \({s_1}_{i+1}={s_2}_{j-1}\),也就是形如 AB
和 BA
这样的地方,那么就表示这里只有一个儿子。
那么直接双重循环枚举 \(i,j\) 就可以了。时间复杂度 \(O(|s|^2)\),可以通过。