Unique Binary Search Trees ll -深度优先遍历DFS
题目:Unique Binary Search Trees ll
- English:
Given an integer n, generate all structurally unique BST’s (binary search trees) that store values 1 … n.
Example:
Input: 3
Output:
[
[1,null,3,2],
[3,2,null,1],
[3,1,null,null,2],
[2,1,3],
[1,null,2,null,3]
]
Explanation:
The above output corresponds to the 5 unique BST’s shown below:
1 3 3 2 1
\ / / / \ \
3 2 1 1 3 2
/ / \ \
2 1 2 3
中文:
给定一个整数n,生成所有结构上唯一的存储值1的BST(二进制搜索树)…n。
例子:
输入:3
输出:
[
[1,null,3,2],
[3,2,null,1],
[3,1,null,null,2],
[2,1,3],
[1,null,2,null,3]
]
说明:
上述输出对应于如下所示的5个唯一的BST:
1 3 3 2 1
\ / / / \ \
3 2 1 1 3 2
/ / \ \
2 1 2 3
- 分析思路:
1-n先去枚举根节点的位置,从根节点分为左子树和右子树,左右子树分别递归求解所有方案,当前方案就是将左边的求解中随便选择一个方案,右边的求解中随便选择一个方案,乘法原理,将左右两个方案拼接在一起,形成一个新的方案,把所有不同的根节点所有方案累加在一起,就是1-n的所有方案。
不同的方案,有的节点可以共用
- 代码:
/*Definition for a binary tree node.
struct TreeNode{int val;TreeNode *left;TreeNode *right;TreeNode(int x):val(x),left(NULL),right(NULL){}
};
*/class Solution{public:vector<TreeNode*> binaryTrees(int n){if(!n) //空树 return vector<TreeNode*>();return dfs(1,n); //返回所有方案 }vector<TreeNode*> dfs(int l,int r){ //[l,r]区间,拼成的所有的bst的方案 vector<TreeNode*> res; //存储当前所有方案 if(l>r) //序列长度为0 {res.push_back(NULL);//空节点 return res;}//区间长度大于0 for(int i=1;i<=r;i++){auto left=dfs(l,i-1); //递归根节点左边的方案数,right=dfs(i+1,r); //递归根节点右边的方案数 //从左右两边各取一个方案 for(auto <:left) for(auto &rt:right){auto root=new TreeNode(i);root->left=lt; //左子树对应的方案的根节点 root->right=rt; //右子树对应的方案的根节点res.push_back(root); }}return res;}
};
Unique Binary Search Trees ll -深度优先遍历DFS相关推荐
- Unique Binary Search Trees II -- LeetCode
原题链接: http://oj.leetcode.com/problems/unique-binary-search-trees-ii/ 这道题是求解所有可行的二叉查找树,从 Unique Bi ...
- leetcode 95. Unique Binary Search Trees II | 96. Unique Binary Search Trees
95. Unique Binary Search Trees II https://leetcode.com/problems/unique-binary-search-trees-ii/ 题解 题是 ...
- 96. Unique Binary Search Trees(I 和 II)
Given n, how many structurally unique BST's (binary search trees) that store values 1-n? For example ...
- LeetCode 96. Unique Binary Search Trees
96. Unique Binary Search Trees Given n, how many structurally unique BST's (binary search trees) tha ...
- 【重点 递归构造二叉树】LeetCode 95. Unique Binary Search Trees II
LeetCode 95. Unique Binary Search Trees II 本博客转载自:[1]https://segmentfault.com/a/1190000007443961 [2] ...
- 【卡塔兰数】LeetCode 96. Unique Binary Search Trees
LeetCode 96. Unique Binary Search Trees 本博客转载自:http://www.cnblogs.com/grandyang/p/4299608.html Solut ...
- [LeetCode]: 96: Unique Binary Search Trees
题目: Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For e ...
- 【Unique Binary Search Trees II】cpp
题目: Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. F ...
- LeetCode: Unique Binary Search Trees [095]
[题目] Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For ...
最新文章
- xml笔记整理_基础概括
- linux fdisk 分区、格式化、挂载
- 编程语言java-并发(锁)
- 脑电分析系列[MNE-Python-2]| MNE中数据结构Epoch及其创建方法
- 开发板A/D转换原理
- 【原创】sharepoint webpart COPY部署的办法
- 小猿圈Java学习心得之Java程序员能力提升在哪
- 解决 GTK+/GNOME 3 环境下 Java Swing 程序使用本地 GTK+ 主题时菜单无边框 bug 的方法...
- php+nginx导入太大文件报http error错误的原因
- Java基础——类加载机制及原理
- 分布式6大核心专题_分布式Session
- Microsoft SQL Server 2005 提供了一些工具来监控数据库
- Android路由设置
- CodeGym—Java自学神器
- 计算机无法创建新文件夹,使用win10系统时,发现无法新建文件夹怎么办,学会这招即可修复...
- 子群的陪集-》群的拉格朗日定理
- 2021年韩国经济发展研究报告
- lh服务器注册,登不进去的人请看这里:LH服无法登录问题官方解释
- uni-app 中文档阅读倒计时
- Mac系统下TestCafe初体验
热门文章
- 用python画简单的图案-如何用Python画各种著名数学图案 | 附图+代码
- python自动化办公excel-自动化办公:python操作Excel
- python适合自学编程吗-没编程基础可以学python吗
- 听了那么多语音识别,你知道它的发展史吗?
- 前端请求接口post_程序员:HttpClient进行post请求的工具类,访问第三方接口HTTPS...
- 此次边路调整系统推荐射手走哪路_王者荣耀:廉颇“史诗级”改动,成吉思汗等射手降温!...
- 【java笔记】Collections集合工具类
- ajax post提交数据_第三十五天JavaScript中的ajax
- qqwry.dat java 乱码_UTF-8使用纯真IP数据库乱码问题
- Linux怎么修改用户密码