一:题目

二:上码

class Solution {public:/**思路:1.分析题意二叉搜索树(左子树结点小于根节点 根节点小于右节点)n=1时有一种形态,n=0的话,空树也是一种形态当n=2的时候,二叉树有两种形状当 n = 3的时候跟结点可以是1,2,3根节点为1的时候,其右子树有两个结点,那么其有两种形态和n=2的形态相同根节点为3的时候和根节点为1的情况类似则dp[3] = 根节点为1的时候的形状数目+根节点为2的形状数+根节点为3的形状数目 2.动态规划5不步走1>:确定dp数组的含义和下标的含义dp[i]表示的是 n为i的时候的形状数            2>:确定dp数组的状态递推公式dp[i] = dp[以j头结点的左子树结点个数] * dp[以j为头结点的右子树的结点个数]            因为要包含以头结点是[0,n],所以:dp[i] += dp[j-1] * dp[i-j];这里的j-1代表是比j小的个数有j-1个(左子树嘛就是结点的值比根节点小)i-j代表的是比j大的有i-j个(同理)3>:确定dp数组的如何初始化dp[0] = 1,空树也是 一种形态4>:确定dp数组的遍历顺序从前向后遍历5>:举例验证*/int numTrees(int n) {vector<int>dp(n+1);dp[0] = 1;for(int i = 1; i <= n; i++) {for(int j = 1; j <= i; j++) {//以j为头节点的话,dp[i] += dp[j-1] * dp[i-j];//dp[j-1]:以j为头节点左子树结点个数;dp[i-j]:以j为头结点右子树的个数}}return dp[n];}
};


安!

leetcode96. 不同的二叉搜索树相关推荐

  1. leetcode96. 不同的二叉搜索树(动态规划)

    给定一个整数 n,求以 1 - n 为节点组成的二叉搜索树有多少种? 解题思路 *数组含义:dp[i] i个节点的不同组成结构 状态转移:任取节点为根节点,遍历左右子树可能出现的个数,dp[i]=dp ...

  2. leetcode96. 不同的二叉搜索树 动归vs数学?

    给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1         3   ...

  3. Leetcode--96. 不同的二叉搜索树(java)

    给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1         3   ...

  4. LeetCode--96. 不同的二叉搜索树(动态规划)

    不同的二叉搜索树(动态规划) 1. 题目描述 2. 题目分析 3. C语言实现 4. Python实现 1. 题目描述 难度:中等 2. 题目分析 首先我们要知道二叉搜索树的特点: 左子树肯定小于其根 ...

  5. 不同的二叉搜索树—leetcode96

    给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1         3   ...

  6. LeetCode简单题之二叉搜索树的最小绝对差/最小距离

    题目 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 . 差值是一个正数,其数值等于两值之差的绝对值. 示例 1: 输入:root = [4,2,6,1,3] 输出: ...

  7. LeetCode简单题之二叉搜索树的范围和

    题目 给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和. 示例 1: 输入:root = [10,5,15,3,7,null,18], low = 7, ...

  8. 【剑指Offer】23、二叉搜索树的后序遍历序列

      题目描述:   输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同.   解题思路:   对于后续遍历序列,序 ...

  9. 消除左递归实验代码_「leetcode」108. 构造二叉搜索树【递归】【迭代】详解!

    构造二叉搜索树,一不小心就平衡了 ❞ 108.将有序数组转换为二叉搜索树 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树 ...

最新文章

  1. 自动驾驶国家标准将出台,2021年是L3级自动驾驶汽车元年?
  2. matlab程序崩溃怎么解决,跪求matlab达人帮我看看程序,我实在是要崩溃了......
  3. 直播 | AAAI 2021:如何缓解GNN预训练和微调之间的优化误差?
  4. SAP 前端技术的演化史简介
  5. dd , /dev/zero和/dev/null
  6. JEECG社区公司,招聘全职JAVA工程师(全职)
  7. es6 遍历 Symbol 属性名
  8. L1-031. 到底是不是太胖了-PAT团体程序设计天梯赛GPLT
  9. 一个Lumen多层拆分手记
  10. WPS新建文字分享微信.docx形式_DOC和DOCX文件的区别
  11. 基于android的电影院订票影院售票系统app
  12. 解决FireFox(火狐浏览器)占用资…
  13. AI把英语系新生吓退学?别急,我们从来都是那只懒蚂蚁
  14. Python制作微信小助手
  15. 车主因眼睛小被自动驾驶误判?——智能座舱CV体验的经典corner case剖析 by 资深AI产品经理@方舟...
  16. 2021年中国碳纤维市场发展现状及重点企业对比分析:光威复材vs中复神鹰vs中简科技[图]
  17. 晶创电梯卡的数据结构
  18. 国内好用的免费DNS服务器
  19. 解释什么叫老公?什么叫老婆?
  20. 人民币贬值不是大问题

热门文章

  1. html选择文本框后提示消失,两种方法实现文本框输入内容提示消失
  2. mysql数据表设计要点以及快门
  3. 【ArcGIS微课1000例】0003:按属性选择(Select by Attributes)
  4. Java面向对象编程学习
  5. Android之提示Method return type must not include a type variable or wildcard:
  6. 求字符串里里面字符出现的次数和出现哪些不同的字符的字符串
  7. 全球顶级大学,在中国录取率却不足0.5%,答案一针见血!
  8. 第一次去四川的广东人是什么下场?
  9. 每日一笑 | 一个男人逐渐变心的过程
  10. 程序猿都在关注的6个优质公众号