LeetCode 95. Unique Binary Search Trees II 动态演示
比如输入为n, 这道题目就是让返回由1,2,... n的组成的所有二叉排序树,每个树都必须包含这n个数
这是二叉树的排列组合的题目。排列组合经常用DFS来解决。
这道题比如输入为3,也就是求start=1, end=3的所有树,简写为t[1,3]。那么就要考虑这些情况:
//t[a,b]={NULL} if a>b
root为1,left为t[1,0], right为t[2,3] left为{NULL}, right为两个树(见下面解释)
root为2,left为t[1,1], right为t[3,3]
root为3,left为t[1,2], right为t[4,3]
类似,要求t[2,3], 就要考虑下面情况
root为2,left为t[2,1], right为t[3,3], 可以看出只有一个
root为3,left为t[2,2], right为t[4,3], 也只有一个
另外对于DFS,为防止重复计算,可以用map来存储计算过的t[x,y]。这也是经常用到的办法。
class Solution {
public:
vector<TreeNode*> generateTreesDFS(int start, int end, map<pair<int,int>, vector<TreeNode*>>& vecTreeMap) {
vector<TreeNode*> subTree;
if(vecTreeMap.find({start, end}) != vecTreeMap.end())
return vecTreeMap[{start,end}];
//a(start)
//a(end)
//ahd(subTree)
if (start > end) subTree.push_back(NULL);
else {
for (int i = start; i <= end; ++i) {
vector<TreeNode*> leftSubTree = generateTreesDFS(start, i - , vecTreeMap);
vector<TreeNode*> rightSubTree = generateTreesDFS(i + , end, vecTreeMap);
for (int j = ; j < leftSubTree.size(); ++j) {
for (int k = ; k < rightSubTree.size(); ++k) {
TreeNode *node = new TreeNode(i);
node->left = (leftSubTree)[j];
node->right = (rightSubTree)[k];
subTree.push_back(node);
}
}
}
//dsp
}
vecTreeMap[{start, end}] = subTree;
return subTree;
} vector<TreeNode*> generateTrees(int n) {
if(n==) return {};
map<pair<int,int>, vector<TreeNode*>> vecTreeMap;
//amap(vecTreeMap, pair<int,int>, vector<TreeNode*>)
return generateTreesDFS(,n, vecTreeMap);
}
};
程序动态运行过程:http://simpledsp.com/FS/Html/lc95.html
LeetCode 95. Unique Binary Search Trees II 动态演示的更多相关文章
- [LeetCode] 95. Unique Binary Search Trees II(给定一个数字n,返回所有二叉搜索树) ☆☆☆
Unique Binary Search Trees II leetcode java [LeetCode]Unique Binary Search Trees II 异构二叉查找树II Unique ...
- [leetcode]95. Unique Binary Search Trees II给定节点形成不同BST的集合
Given an integer n, generate all structurally unique BST's (binary search trees) that store values 1 ...
- [LeetCode] 95. Unique Binary Search Trees II 唯一二叉搜索树 II
Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. For e ...
- [LeetCode] 95. Unique Binary Search Trees II 独一无二的二叉搜索树之二
Given an integer n, generate all structurally unique BST's (binary search trees) that store values 1 ...
- leetcode 95 Unique Binary Search Trees II ----- java
Given an integer n, generate all structurally unique BST's (binary search trees) that store values 1 ...
- leetCode 95.Unique Binary Search Trees II (唯一二叉搜索树) 解题思路和方法
Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. For e ...
- [leetcode]95 Unique Binary Search Trees II (Medium)
原题 字母题添加链接描述 一开始完全没有思路.. 百度看了别人的思路,对于这种递归构造的题目还是不熟,得多做做了. 这个题目难在构造出来.一般构造树都需要递归. 从1–n中任意选择一个数当做根节点,所 ...
- 【LeetCode】95. Unique Binary Search Trees II 解题报告(Python)
[LeetCode]95. Unique Binary Search Trees II 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzh ...
- leetcode 96. Unique Binary Search Trees 、95. Unique Binary Search Trees II 、241. Different Ways to Add Parentheses
96. Unique Binary Search Trees https://www.cnblogs.com/grandyang/p/4299608.html 3由dp[1]*dp[1].dp[0]* ...
随机推荐
- java_第一年_JavaWeb(4)
HttpServletResponse对象 向客户端发送数据的方法: 通过getOutputStream()方法得到OutputStream对象,再通过write发送 通过getWriter()方法得 ...
- pytest--命令行参数
使用pytest --help可以查看全部选项 -v:pytest -v 说明:可以输出用例更加详细的执行信息,比如用例所在的文件及用例名称等 -q(--quiet) 该选项的作用与-v/--ve ...
- SR-IOV
SR-IOV 来源 http://blog.csdn.net/liushen0916/article/details/52423507 摘要: 介绍SR-IOV 的概念.使用场景.VMware 和 K ...
- .ef core 多对对关系的关联方法
最近在用.net core 重构博客,在使用ef core连表查询时,遇到了一些问题.记录一下. 关系:一个博客可以有多个标签,一个标签可以属于多个博客,博客和标签之间存在多对多的关系 下面是实体代码 ...
- linux安装jdk环境(多种方式)
通过tar.gz压缩包安装 此方法适用于绝大部分的linux系统 1.先下载tar.gz的压缩包,这里使用官网下载. 进入: http://www.oracle.com/technetwork/jav ...
- 数据库系统实现 第一章 DBMS实现概述
DBMS提供的能力 1)持久存储 DBMS在灵活性方面比文件系统要好,同时支持对非常大量数据的存储 2)编程接口 3)事务管理 DBMS支持对数据的并发存取,即多个不同的进程(称作事物)同时存取操作, ...
- maven 配置自动本地/线上不同配置自动打包
工程结构:在resource下新建开发,线上不同文件夹存放不同配置文件 pom.xml配置文件 <!-- maven配置不同环境打包 --> <build> <plugi ...
- Jmeter —— Test Fragment (测试片段)
Test Fragment(测试片段) 1. 概念 JMeter中的Test Fragent:是控制器上一种特殊的线程组:它在测试树上与线程组处于同一个层级.但是使用的时候需要和Include ...
- phpstorm 各种报错
1.启动时报错 Failed to load module "canberra-gtk-module" 解决方法:libcanberra-gtk-module sudo apt-g ...
- react-jsx和数组
JSX: 1.全称:JavaScriptXML, 2.react定义的一种类似于XML的JS扩展语法:XML+JS 3.作用:用来创建react虚拟DOM(元素)对象 var ele=<h1&g ...