今天发现一个神奇的算法,卡特兰数。居然可以这么厉害的,算出一个序列的二叉树的个数。
还有一个,一颗二叉树的前序遍历是入栈顺序,中序遍历是出栈顺序!!所以当给定了一颗二叉树的前序遍历,问有多少种情况的中序遍历是,也是卡特兰数。
卡特兰数:给定n个+1,给定n个-1,求某种特定序列的个数。这种序列满足,无论去前多少个数相加,都是大于等于0。最终序列的个数会等于第n个卡特兰数。
具体为啥会等于卡特兰数,请看这个博客,写的相当好。http://www.cnblogs.com/wwwjieo0/p/3780170.html
从+1,和-1联想到‘(’和‘}’的关系,要保证括号配对成功,就必须保证无论前多少个括号里面,左括号数大于右括号数。所以n对括号的匹配数(即2n个括号,注意对,也表明有n个左括号,n个右括号)就是n的卡特兰数。