labuladong刷题之二叉搜索树心法(构造篇)

Q1题目链接https://leetcode.com/problems/unique-binary-search-trees/

leetcode 96  有多少种不同的二叉搜索树

看到题目的第一思路:

如何有效穷举 几个数字规定下的所有二叉搜索树的可能

代码随想录之后的想法和总结:

整个过程就是不停地 拆子区间、乘法(左右子树组合)、加法(不同根节点累加)

  • 递归树会不断地拆成「左区间 × 右区间」。

  • 很多子问题会被重复计算,比如 count(4,5) 出现在多个地方。

  • 这也是为什么优化版会用 记忆化递归DP 来避免重复。(用dp备忘录方法)

时间复杂度以及空间复杂度:

时间:

  • 子问题:count(lo, hi) 只和区间长度有关。

  • 区间总数:最多 O(n^2)(因为 lo,hi 各有 n 个可能)。

  • 每个子问题要枚举根节点 mid,最多 O(n) 次。

所以总时间复杂度为:O(n2⋅n)=O(n3)

空间:

  • 备忘

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值