不同的二叉搜索树 II

  • 题目
  • 思路与算法
  • 代码实现
  • 复杂度分析

题目

思路与算法

  1. 很基本的思路就是递归,没太多其他想法,直接根据二叉搜索树的性质进行递归即可。

代码实现

class Solution {public List<TreeNode> generateTrees(int n) {List<TreeNode> ans = new ArrayList<TreeNode>();if (n == 0) {return ans;}return getAns(1, n);}private List<TreeNode> getAns(int start, int end) { List<TreeNode> ans = new ArrayList<TreeNode>();// 特况处理if (start > end) {ans.add(null);return ans;}// 一个数字则作为一棵树if (start == end) {TreeNode tree = new TreeNode(start);ans.add(tree);return ans;}//尝试每个数字作为根节点for (int i = start; i <= end; i++) {// 左子树List<TreeNode> leftTrees = getAns(start, i - 1);// 右子树List<TreeNode> rightTrees = getAns(i + 1, end);//左右子树组合for (TreeNode leftTree : leftTrees) {for (TreeNode rightTree : rightTrees) {TreeNode root = new TreeNode(i);root.left = leftTree;root.right = rightTree; ans.add(root);}}}return ans;}
}

复杂度分析

  1. 时间空间复杂度都不太好算,暂不讨论

20200721:每日一题之不同的二叉搜索树 II(leetcode95)相关推荐

  1. Leetcode每日一题:530.minimum-absolute-difference-in-bst(二叉搜索树的最小绝对值)

    思路:根据二叉搜索树的中序遍历是递增的这一性质,我们只需列出中序遍历的结果,并遍历一遍便可得到最小绝对值,或者在中序遍历的过程中,min{now-pre,res}进行比较: void dfs(Tree ...

  2. [Leetcode][第95题][JAVA][不同的二叉搜索树 II][递归]

    [问题描述][中等] [解答思路] 1. 递归 复杂度 class Solution {public List<TreeNode> generateTrees(int n) {if (n ...

  3. 刷题记录8---验证二叉搜索树+二叉树的层序遍历+从前序与中序遍历序列构造二叉树+二叉树展开为链表+二叉树的最近公共祖先

    前言 所有题目均来自力扣题库中的hot 100,之所以要记录在这里,只是方便后续复习 98.验证二叉搜索树 题目: 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树. 有效 二叉搜 ...

  4. Leetcode95. 不同的二叉搜索树 II(C语言)

    Leetcode95. 不同的二叉搜索树 II(C语言) 算法-分治:算法与数据结构参考 题目: 给定一个整数 n,生成所有由 1 - n 为节点所组成的二叉搜索树1.例: 输入: 3 输出: [ [ ...

  5. gorm preload 搜索_LeetCode刷题笔记|95:不同的二叉搜索树 II

    题目描述 给定一个整数 n,生成所有由 1 ... n 为节点所组成的 二叉搜索树 . 示例 输入:3 输出: [ [1,null,3,2], [3,2,null,1], [3,1,null,null ...

  6. 力扣算法题—095不同的二叉搜索树【二叉树】

    给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树. 示例: 输入: 3 输出: [[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1 ...

  7. 编程题007--判断是不是二叉搜索树--niuke

    题目描述: 给定一个二叉树根节点,请你判断这棵树是不是二叉搜索树. 二叉搜索树满足每个节点的左子树上的所有节点均小于当前节点且右子树上的所有节点均大于当前节点. 提示: 数据范围:节点数量满足 1 ≤ ...

  8. 刻意练习:LeetCode实战 -- Task23. 不同的二叉搜索树 II

    背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务.本期训练营采用分类别练习的模式,即选择了五个知识点(数组.链表.字符串.树.贪心算法),每个知 ...

  9. 【数据结构与算法】之深入解析“不同的二叉搜索树II”的求解思路与算法示例

    一.题目要求 给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同二叉搜索树,可以按 任意顺序 返回答案. 示例 1: 输入:n = 3 输出:[[1,nul ...

最新文章

  1. Windows 10截屏动画失效怎么恢复?
  2. golang 调用c代码
  3. nyist -- 组队赛(一)
  4. SAP BTP 平台 CloudFoundry 环境下编程概述
  5. 【CodeForces - 219D 】Choosing Capital for Treeland (树形dp)
  6. mysql varchar(20)_MySQL中采用类型varchar(20)和varchar(255)对性能上的影响
  7. Appfuse下载及安装步骤
  8. 带有LLVM的eBPF组件
  9. OneAPM Cloud Test——系统性能监控神器 1
  10. 2019 年对 VR 设备的五个期待
  11. smtp 邮件发送 附带ssl版本
  12. 升级到jdk1.8后 sun/io/CharToByteConverter错误及处理
  13. 开课吧Java课堂:什么是流?如何运用字节流和字符流?
  14. paip.提升用户体验---提示语
  15. x1000e rtl wifi 移植
  16. 浅析三点SEO理论到底带给了我们什么
  17. 杂谈-苹果账号调查事件始末,Apple审核流程或有变
  18. IDEA多module的项目共享配置文件的处理
  19. build constraints exclude all Go file GOland 导入“github.com/gin-gonic/gin“ 报红,
  20. 一对一直播app大热,使用源码或自主开发一对一APP需要了解哪些技术?...

热门文章

  1. 二十年的编程,教会我的五件事!
  2. 这个东西可以温暖你想打BUG的心......
  3. 支付宝回应 AI 换脸风险;新 iPhone 或将于 13 号接受预订;Linux Lite 4.6 发布 | 极客头条...
  4. 豆瓣评分 9.7,等了好久的《操作系统导论》Operating Systems 终于来了
  5. 程序员疯狂记事:如何利用众多技术栈构建一个 Web 应用程序?!
  6. 开源的全面胜利背后,那些被遗忘的人性问题
  7. @程序员,正在自学机器学习?这六点一定要牢记!
  8. 向 Android 4.0 彻底说再见!
  9. 集 Python、C、R、Ruby 之所长,动态编程语言 Julia 1.0 正式发布
  10. 我已经弃用头条了,难道还要抛弃微信?