题目
求n个无差别的节点构成的二叉树有多少种不同的结构?
给定一个整数n,请返回不同结构的二叉树的个数。保证结果在int范围内。
测试样例:
1
返回:1
思路
卡特兰数,h(n)=h(0)∗h(n−1)+h(1)∗h(n−2)+...+h(n−1)h(0)h(n)=h(0)∗h(n−1)+h(1)∗h(n−2)+...+h(n−1)h(0)
代码
class TreeCount:
def get_arrange(self, n, num):
count = 1
num1, num2 = 1, 1
while count <= num:
num1 *= n
n -= 1
num2 *= count
count += 1
return num1 // num2
def countWays(self, n):
# write code here
return self.get_arrange(2 * n, n) // (n + 1)