省选前补一补普及组的知识点
一次考试发现自己不会枚举所有二叉树
先序遍历:根左右
中序遍历:左根右
后序遍历:左右根
根据二叉树的中序遍历和前序遍历,还原二叉树
就是前序遍历找到每个子树的根,中序遍历找到每个子树的sz。然后递归。O(n)复杂度
所以一些需要枚举二叉树的题(反正都是卡特兰数范围内的暴力)
可以n!枚举中序遍历,然后还原并且判断是否合法
或者各种胡乱枚举,,然后去重等等。
有没有O(n*卡特兰数)的算法啊~~
有
直接枚举括号序列,然后再建树即可
要使得每个点的儿子只有两个,,,大概配合着dfs枚举,,