不同的二叉搜索树 IIPython解法
给你一个整数 n
,请你生成并返回所有由 n
个节点组成且节点值从 1
到 n
互不相同的不同 二叉搜索树 。可以按 任意顺序 返回答案。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/unique-binary-search-trees-ii
例:
输入:n = 3
输出:[[1,null,2,null,3],[1,null,3,2],[2,1,3],[3,1,null,null,2],[3,2,null,1]]
解析:
递归,分成左子树和右子树两个子问题。
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):def generateTrees(self, n):""":type n: int:rtype: List[TreeNode]"""res = [] # 存放最终结果if n < 1:return reselse:return self.generateBST(1, n)def generateBST(self, start, end):res = [] # 存放临时子树if start > end:res.append(None)return reselse:for i in range(start, end + 1):# 左子树left_tree = self.generateBST(start, i - 1) # 添加所有不同的左子树# 右子树right_tree = self.generateBST(i + 1, end) # 添加所有不同的右子树for left in left_tree:for right in right_tree: # 左右子树组合回到上一层的递归root = TreeNode(i)root.left = leftroot.right = rightres.append(root)return res # 返回上一层递归的左/右子树结果
不同的二叉搜索树 IIPython解法相关推荐
- 有序链表转换二叉搜索树Python解法
给定一个单链表的头节点 head ,其中的元素 按升序排序 ,将其转换为高度平衡的二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差不超过 1. 来源:力扣(Lee ...
- 将有序数组转换为二叉搜索树Python解法
给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树. 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树. 来源: ...
- 恢复二叉搜索树Python解法
给你二叉搜索树的根节点 root ,该树中的 恰好 两个节点的值被错误地交换.请在不改变其结构的情况下,恢复这棵树 . 来源:力扣(LeetCode) 链接:https://leetcode-cn.c ...
- 验证二叉搜索树Python解法
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树. 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数. 节点的右子树只包含 大于 当前节点的数. 所有左子树和右子 ...
- leetcode 1038. 从二叉搜索树到更大和树
目录 题目描述: 示例: 解法: 题目描述: 给出二叉搜索树的根节点,该二叉树的节点值各不相同,修改二叉树,使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和. 提醒一下,二 ...
- gorm preload 搜索_LeetCode刷题笔记|95:不同的二叉搜索树 II
题目描述 给定一个整数 n,生成所有由 1 ... n 为节点所组成的 二叉搜索树 . 示例 输入:3 输出: [ [1,null,3,2], [3,2,null,1], [3,1,null,null ...
- leetcode 98. 验证二叉搜索树 递归遍历左右子树和中序遍历 c语言解法
如题: 给定一个二叉树,判断其是否是一个有效的二叉搜索树. 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数. 节点的右子树只包含大于当前节点的数. 所有左子树和右子树自身必须也是 ...
- 【超100%解法】剑指 Offer 33. 二叉搜索树的后序遍历序列
立志用最少的代码做最高效的表达 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同. 示例 1: 输入: ...
- 【剑指Offer】23、二叉搜索树的后序遍历序列
题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 解题思路: 对于后续遍历序列,序 ...
最新文章
- Java 构造方法与成员方法的区别
- 【CSS】【13】文字的排版
- Shell中创建序列和数组(list、array)的方法
- python字符串和List:索引值以 0 为开始值,-1 为从末尾的开始位置;值和位置的区别哦...
- spark的流失计算模型_使用spark对sparkify的流失预测
- 畅销书主编推出 MATLAB 春季班,限量优惠+送百G资料!
- Java 数组插入元素
- 程序员如何自我超越,教你一招
- SPOJ-New Distinct Substrings,注意会爆int
- mysql 额外内存池_MySQL探秘(三):InnoDB的内存结构和特性
- 二叉搜索树(二叉排序树)
- SQL2008 SP3下载
- P4778 Counting swaps (组合数学,打表推通项公式,OEIS)
- 用 UrlSchemes 实现调用应用并传参
- 使用双重循环实现五子棋游戏棋盘的绘制
- 外贸人如何快速学好英语
- 20款有趣的英文卡通免费字体
- 快速实战SQL (一) - 检索数据
- Mac 时间机器 Time Machine 备份速度太慢的解决方法 (加速备份命令)
- windows下测试磁盘读写(HD Tune)
热门文章
- 我的2020年度总结
- 如何在浏览器里开发并运行 SAP UI5 应用
- 关于 SAP Commerce Cloud 启动时报 Address already in use - bind 的错误消息
- 关于 SAP CloudFoundry 应用的 Resilience
- TypeScript class 的访问控制
- 如何从 SAP Fiori Elements List Report Table 点击事件响应函数里拿到表格某一行的信息
- SAP C4C Mashup port bindingF4帮助对话框里的数据源
- javax.ws.rs.Path注解@Path的工作原理解析
- SAP CRM WebClient UI Excel Export的运行时执行明细
- 阿里云Java虚拟机的安装位置