95. Unique Binary Search Trees II
来源:互联网 发布:淘宝网的电商模式 编辑:程序博客网 时间:2024/06/15 12:54
题目:唯一的二叉搜索树2
Given an integer n, generate all structurally unique BST's (binary search trees) that store values 1...n.
For example,
Given n = 3, your program should return all 5 unique BST's shown below.
1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \ 2 1 2 3
题意:
给定一个整数n,生成所有结构的唯一二叉搜索树来存储1到n之间的所有数。OJ里面存储二叉树是按照一层一层遍历的,如果在一层中有不存在的节点,则用‘#’字符表示。例如
1 / \ 2 3 / 4 \ 5在OJ中存储序列为“{1,2,3,#,#,4,#,#,5}”
思路:
该题是Unique Binary Search Trees题目的延伸,Unique Binary Search Trees题只需要返回有多少中存储方法即可,这道题需要将每种结构的二叉树结构建出来按OJ的存储序列存储之后返回。构建二叉树的问题一般都是采用递归来解,划分左右子树,递归构造。
代码:C++版:28ms
/** * 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*> generateTrees(int n) { if (n == 0) return {}; return generate(1, n); }private: vector<TreeNode*> generate(int start, int end) { vector<TreeNode*> subTree; //存储各种结构的二叉搜索树 if (start > end) { subTree.push_back(nullptr); return subTree; } for (int k=start; k<=end; k++) { vector<TreeNode*> leftSubs = generate(start, k-1); //左子树集合 vector<TreeNode*> rightSubs = generate(k+1, end); //右子树集合 for (auto i : leftSubs) { for (auto j : rightSubs) { TreeNode *node = new TreeNode(k); //新建根节点,将左右子节点拼接到根节点的左右子树 node->left = i; node->right = j; subTree.push_back(node); //将每种不同结构的二叉搜索树保存进vector中 } } } return subTree; }};
0 0
- [LeetCode]95.Unique Binary Search Trees II
- [Leetcode] 95. Unique Binary Search Trees II
- LeetCode --- 95. Unique Binary Search Trees II
- [leetcode] 95.Unique Binary Search Trees II
- [leetcode] 95. Unique Binary Search Trees II
- 95. Unique Binary Search Trees II
- 95. Unique Binary Search Trees II LeetCode
- ***LeetCode 95. Unique Binary Search Trees II
- 95. Unique Binary Search Trees II
- 95. Unique Binary Search Trees II
- 95. Unique Binary Search Trees II
- Leetcode 95. Unique Binary Search Trees II
- 95. Unique Binary Search Trees II
- LeetCode *** 95. Unique Binary Search Trees II
- 【LeetCode】95. Unique Binary Search Trees II
- 95. Unique Binary Search Trees II
- LeetCode 95. Unique Binary Search Trees II
- 95. Unique Binary Search Trees II
- Set接口源码解析
- volatile关键字
- NOIP提高组2011 观光公车
- [LOGO]如何更换kernel LOGO
- Unable to resolve project target 'android-21'
- 95. Unique Binary Search Trees II
- Android M 新的运行时权限开发者需要知道的一切
- 文本挖掘,我们想要得到什么
- Cloudera 5.7集群部署(一)--准备工作
- 【Dongle】【Web】牛腩新闻发布系统之终篇
- SpringMVC之HelloWorld
- 找出字符串
- BZOJ 4569: [Scoi2016]萌萌哒【倍增并查集
- Medical image registration(section7)