给定一个整数 n,生成所有由 1 ... n 为节点所组成的 二叉搜索树 。

示例:

输入:3
输出:
[
  [1,null,3,2],
  [3,2,null,1],
  [3,1,null,null,2],
  [2,1,3],
  [1,null,2,null,3]
]
解释:
以上的输出对应以下 5 种不同结构的二叉搜索树:

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

//1~n 之间的节点能组成几组二叉搜索树func generateTrees(n int) []*TreeNode {if n == 0 {return nil}//1~n之间的节点范围return helper(1, n)
}func helper(start, end int) []*TreeNode {if start > end {return []*TreeNode{nil}}allTrees := []*TreeNode{}// 枚举可行根节点for i := start; i <= end; i++ {// 获得所有可行的左子树集合leftTrees := helper(start, i - 1)// 获得所有可行的右子树集合rightTrees := helper(i + 1, end)// 从左子树集合中选出一棵左子树,从右子树集合中选出一棵右子树,拼接到根节点上for _, left := range leftTrees {for _, right := range rightTrees {//初始化节点值为i,左子树和右子树都为nilcurrTree := &TreeNode{i, nil, nil}currTree.Left = leftcurrTree.Right = rightallTrees = append(allTrees, currTree)}}}return allTrees
}

算法:不同二叉搜索树||相关推荐

  1. 看动画学算法之:二叉搜索树BST

    文章目录 简介 BST的基本性质 BST的构建 BST的搜索 BST的插入 BST的删除 看动画学算法之:二叉搜索树BST 简介 树是类似于链表的数据结构,和链表的线性结构不同的是,树是具有层次结构的 ...

  2. 《数据结构与算法之二叉搜索树(Java实现)》

    说在前头:本人为大二在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,能力有限,文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正.若 ...

  3. 【每日一算法】二叉搜索树结点最小距离

    微信改版,加星标不迷路! 每日一算法-二叉搜索树节点最小距离 作者:阿广 阅读目录 1 题目 2 解析 1 题目 给定一个二叉搜索树的根结点 root, 返回树中任意两节点的差的最小值. 示例: 输入 ...

  4. 算法篇 - 二叉搜索树

    前言 在前端的工作当中,二叉搜索树不怎么常见,虽然没有快排.冒泡.去重.二分.希尔等算法常见,但是它的作用,在某些特定的场景下,是非常重要的. 目前es6的使用场景比较多,所以我准备能用es6的地方就 ...

  5. 数据结构与算法之二叉搜索树

    与链表不同,树是一种非线性的数据结构.树中最常用的是二叉树,二叉树限制了子树的数量,也就是每个结点的子树至多2个,并且这两个子树是有顺序的.而二叉搜索树(二叉查找树,二叉排序树)是指根节点的关键字大于 ...

  6. leetcode算法题--二叉搜索树迭代器

    题目链接:https://leetcode-cn.com/problems/binary-search-tree-iterator/ 1.排序 将树元素保存到数组中,再对其排序. class BSTI ...

  7. 【数据结构与算法】二叉搜索树V2.0的Java实现

    更新说明 在二叉搜索树V1.0的编程实现中,我们实现了BST的查找.插入,左右儿子删除的功能,但写的确实很一般,这里就Update一下. 功能介绍 void insert(x) → Insert x ...

  8. 数据结构与算法-平衡二叉搜索树

    平衡二叉搜索树 1.自平衡的二叉搜索树 2.平衡 (1)空树平衡 (2)非空树平衡 左右子树平衡 左右子树高度差绝对值 <= 1 3.平衡因子 左右子树的高度差的衡量值 -1 0 1 (一)平衡 ...

  9. leetcode算法题--二叉搜索树与双向链表

    原文链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/ Node *pre = ...

  10. leetcode算法题--二叉搜索树的后序遍历序列

    原题链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/ bool verifyP ...

最新文章

  1. Spring Boot 中 @EnableXXX 注解的驱动逻辑
  2. 你所需要的java基础篇和提升篇大总结
  3. jzoj 6302. 提高组
  4. mysql delette_关于字符串:首字母大写MySQL
  5. Java基础学习总结(25)——Log4j快速入门教程
  6. 【Unity3D】计算二维向量夹角(-180到180)
  7. 群晖做网页服务器_群晖NAS服务器管理后台的登入教程
  8. h2o flow初探
  9. Elasticsearch:运用 Elasticsearch 查找类似文档:more_like_this
  10. 有趣且有意义的数字,你想到了什么?请不吝留言
  11. 常用ansible命令
  12. python学习-循环替换txt文件中的指定字符
  13. UltraEdit编辑器使用之快捷键篇
  14. 大话赛宁云 | 演系列-超仿真网络空间“演武场”
  15. 关于for循环中三个语句的执行顺序
  16. 【C语言中“%d %%d %%%d“代表的意思】
  17. linux 读取zip文件内容,如何从linux服务器上的大(30Gb)zip文件中提取文件
  18. [行为识别论文详解]TSN(Temporal Segment Networks)
  19. 无人值守地磅智能管理系统
  20. Angular 4.0_在线竞拍网站(4)

热门文章

  1. 【Flutter】StatefulWidget 组件 ( PageView 组件 )
  2. 【软件工程】CMMI 能力成熟度模型集成 ( CMMI 工程过程域 | CMMI 支持过程域 ) ★
  3. 理解面向对象编写的极致简单的小代码
  4. 前端开发之JavaScript基础篇四
  5. 用 Python 实现文件查找
  6. ElasticSearch聚合aggs入门
  7. Ubuntu/CentOs 搭建SVN服务器
  8. day04-视图/配置文件/静态文件的基本使用
  9. 北大AI公开课2019 | 雷鸣:人工智能革命与机遇
  10. 从各类信用利差走势看风险偏好