题目: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 &lt: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相关推荐

  1. Unique Binary Search Trees II -- LeetCode

    原题链接:  http://oj.leetcode.com/problems/unique-binary-search-trees-ii/   这道题是求解所有可行的二叉查找树,从 Unique Bi ...

  2. 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/ 题解 题是 ...

  3. 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 ...

  4. LeetCode 96. Unique Binary Search Trees

    96. Unique Binary Search Trees Given n, how many structurally unique BST's (binary search trees) tha ...

  5. 【重点 递归构造二叉树】LeetCode 95. Unique Binary Search Trees II

    LeetCode 95. Unique Binary Search Trees II 本博客转载自:[1]https://segmentfault.com/a/1190000007443961 [2] ...

  6. 【卡塔兰数】LeetCode 96. Unique Binary Search Trees

    LeetCode 96. Unique Binary Search Trees 本博客转载自:http://www.cnblogs.com/grandyang/p/4299608.html Solut ...

  7. [LeetCode]: 96: Unique Binary Search Trees

    题目: Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For e ...

  8. 【Unique Binary Search Trees II】cpp

    题目: Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. F ...

  9. LeetCode: Unique Binary Search Trees [095]

    [题目] Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For ...

最新文章

  1. xml笔记整理_基础概括
  2. linux fdisk 分区、格式化、挂载
  3. 编程语言java-并发(锁)
  4. 脑电分析系列[MNE-Python-2]| MNE中数据结构Epoch及其创建方法
  5. 开发板A/D转换原理
  6. 【原创】sharepoint webpart COPY部署的办法
  7. 小猿圈Java学习心得之Java程序员能力提升在哪
  8. 解决 GTK+/GNOME 3 环境下 Java Swing 程序使用本地 GTK+ 主题时菜单无边框 bug 的方法...
  9. php+nginx导入太大文件报http error错误的原因
  10. Java基础——类加载机制及原理
  11. 分布式6大核心专题_分布式Session
  12. Microsoft SQL Server 2005 提供了一些工具来监控数据库
  13. Android路由设置
  14. CodeGym—Java自学神器
  15. 计算机无法创建新文件夹,使用win10系统时,发现无法新建文件夹怎么办,学会这招即可修复...
  16. 子群的陪集-》群的拉格朗日定理
  17. 2021年韩国经济发展研究报告
  18. lh服务器注册,登不进去的人请看这里:LH服无法登录问题官方解释
  19. uni-app 中文档阅读倒计时
  20. Mac系统下TestCafe初体验

热门文章

  1. 用python画简单的图案-如何用Python画各种著名数学图案 | 附图+代码
  2. python自动化办公excel-自动化办公:python操作Excel
  3. python适合自学编程吗-没编程基础可以学python吗
  4. 听了那么多语音识别,你知道它的发展史吗?
  5. 前端请求接口post_程序员:HttpClient进行post请求的工具类,访问第三方接口HTTPS...
  6. 此次边路调整系统推荐射手走哪路_王者荣耀:廉颇“史诗级”改动,成吉思汗等射手降温!...
  7. 【java笔记】Collections集合工具类
  8. ajax post提交数据_第三十五天JavaScript中的ajax
  9. qqwry.dat java 乱码_UTF-8使用纯真IP数据库乱码问题
  10. Linux怎么修改用户密码