美文网首页
唯一BST(96)

唯一BST(96)

作者: 拔丝圣代 | 来源:发表于2018-03-05 23:33 被阅读0次

题目


1~n共n个数能组成几个不同的二叉查找树BST
例如
n=3时,可以组成以下五个BST

   1         3     3      2      1
    \       /     /      / \      \
     3     2     1      1   3      2
    /     /       \                 \
   2     1         2                 3

分析


想明白了其实特别简单。假如结果为f(n)。每一个节点i都可以做根,然后把剩余的节点分成两部分[1, i-1] 和 [i+1, n],分别构成f(i-1)个与f(n-i)个左右子树,每一种左子树都与一种右子树搭配构成一个完整的树,共有f(i-1)*f(n-i)种组合。把每一个节点i做树根的结果加起来,即为所求。

代码


class Solution(object):
    def numTrees(self, n):
        """
        :type n: int
        :rtype: int
        """
        nums = [1] + [0] * n
        for i in range(1, n+1):
            for r in range(i):
                nums[i] += nums[r] * nums[i-r-1]
        return nums[n]

相关文章

  • 唯一BST(96)

    题目 1~n共n个数能组成几个不同的二叉查找树BST例如:n=3时,可以组成以下五个BST 分析 想明白了其实特别...

  • LeetCode #96 #95 #108 #109 #173

    BST 切记,基本所有与BST有关的题目,都要用到一个BST的性质,那就是BST中序遍历有序性。 96. Uniq...

  • Leetcode PHP题解--D96 530. Minimum

    D96 530. Minimum Absolute Difference in BST 题目链接 530. Min...

  • 二叉搜索树(BST)

    BST简介 查询BST 插入和删除 #1. BST简介 BST(Binary Search Tree),二叉搜索树...

  • DLL ro BST BST to DLL

    已写bst to dll dll to bst

  • 二叉搜索树的节点删除

    BST示例代码如下: BST的元素删除 BST节点的前驱与后继搜索 某个BST节点的前驱,即为值比它小的最大的一个...

  • 108. Convert Sorted Array to Bin

    注意BST的格式,如何建立BST等的知识

  • BST

    BST的优秀性质!All the sub-tree are BSTAll elements in left sub...

  • BST

    简书 賈小強转载请注明原创出处,谢谢! 输出 Happy learning !!

  • BST

    BST实现代码:

网友评论

      本文标题:唯一BST(96)

      本文链接:https://www.haomeiwen.com/subject/rqbkfftx.html