96不同的二查搜尋樹

月為暮發表於2020-07-15
# 二叉搜尋樹的特點是左子樹小於根節點,右子樹大於根節點。
# 因此當根節點為i的時候,左子樹的值為1:i-1,右子樹為i+1:n
# 當節點為n的時候所有的能夠組成的樹為左子樹個數乘以右子樹個數。
class Solution:
def numTrees(self, n: int) -> int:
dp = [0] * (n + 1)
dp[0] = 1
for index1 in range(1,n + 1):
for index2 in range(1,index1 + 1):
# dp[index2 - 1]代表左子樹個數
# dp[index1 - index2]代表右子樹個數
dp[index1] += dp[index2 - 1] * dp[index1 - index2]
return dp[n]
A = Solution()
print(A.numTrees(3))

相關文章