数据结构:已知结点求二叉树的种类数
方法一:(2n)!/(n!*(n+1)!)
(记忆好的小伙伴可以直接看公式)
方法二:0个节点的二叉树有1种,即f(0)=1
;1个节点的二叉树有1种,即f(1)=1
;2个节点的二叉树有2种,即f(2)=2
;3个节点的二叉树肯定先得固定一个根节点,然后还剩2个节点,这两个节点有三种排列方式,根节点左边两个、根节点左边一个右边一个、根节点右边两个,这样的话就可以用f(0),f(1)和f(2)来求了:f(3)=f(2)f(0)+f(1)f(1)+f(0)f(2)=21+11+12=5;同理f(4)=f(3)f(0)+f(2)f(1)+f(1)f(2)+f(0)f(3)=51+21+12+15=14;于是就有了递推公式:f(n)=f(n-1)*f(0)+f(n-2)*f(1)+···+f(1)*f(n-2)+f(0)f(n-1)。
例题
按照二叉树的定义,具有3个结点的二叉树有多少种?
答案:5
解析:法一:(23)/(3!(3+1)!)=5
法二:f(3)=f(2)f(0)+f(1)f(1)+f(0)f(2)=21+11+12=5