最近在努力学习关于树的算法,其中一个题目是:
给定三个不相同的数,其前序为1、2、3,其在二叉树中的中序遍历的顺序的种类有多少中?
不就是中序遍历么,我相信明白中序遍历含义的同学一定不成问题。而我们也可以把这个问题看成是一个结点的进栈和出栈的过程问题。其二叉树的形态决定了其进栈出栈的顺序,也就确定了其中序序列。把这个问题推广开来,由前序为1、2、3、4...n 所能得到的中序序列数目恰巧为1、2、3...n按不同顺序进栈出栈所能得到的排列的数目,这个数目为:
这个数列即为为卡特兰数。
这个数列在许多地方都非常有用,比如进行括号的匹配种类的计算等,如果有兴趣的话可以google下这个东东~。