Leetcode: Unique Binary Search Trees II
来源:互联网 发布:淘宝海淘上传身份证 编辑:程序博客网 时间:2024/06/06 18:57
Given 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
这种问题,基本就是递归,关键是合适的递归函数。
/** * Definition for binary tree * 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) { vector<TreeNode *> result; result = generateTreesUtil(1, n); return result; } vector<TreeNode *> generateTreesUtil(int start, int end) { vector<TreeNode *> result; if (start > end) { result.push_back(NULL); } else if (start == end) { result.push_back(new TreeNode(start)); } else { for (int i = start; i <= end; ++i) { vector<TreeNode *> left = generateTreesUtil(start, i - 1); vector<TreeNode *> right = generateTreesUtil(i + 1, end); for (int ll = 0; ll < left.size(); ++ll) { for (int rr = 0; rr < right.size(); ++rr) { TreeNode *root = new TreeNode(i); root->left = left[ll]; root->right = right[rr]; result.push_back(root); } } } } return result; }};
====================第二次=======================
/** * Definition for binary tree * 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) { return getTrees(1, n + 1); } vector<TreeNode*> getTrees(int start, int end) { vector<TreeNode*> result; if (start >= end) { result.push_back(NULL); } else { for (int i = start; i < end; ++i) { auto lefts = getTrees(start, i); auto rights = getTrees(i + 1, end); for (int ll = 0; ll < lefts.size(); ++ll) { for (int rr = 0; rr < rights.size(); ++rr) { TreeNode* root = new TreeNode(i); root->left = lefts[ll]; root->right = rights[rr]; result.push_back(root); } } } } return result; }};
0 0
- LeetCode: Unique Binary Search Trees II
- LeetCode : Unique Binary Search Trees II
- [LeetCode] Unique Binary Search Trees II
- leetcode Unique Binary Search Trees II
- [LeetCode]Unique Binary Search Trees II
- [leetcode]Unique Binary Search Trees II
- LeetCode-Unique Binary Search Trees II
- [leetcode] Unique Binary Search Trees II
- LeetCode - Unique Binary Search Trees II
- LeetCode 95: Unique Binary Search Trees II
- Leetcode Unique Binary Search Trees II
- [LeetCode] Unique Binary Search Trees II
- Leetcode: Unique Binary Search Trees II
- leetcode Unique Binary Search Trees II
- 【Leetcode】Unique Binary Search Trees II
- LeetCode | Unique Binary Search Trees II
- Leetcode Unique Binary Search Trees II
- [LeetCode] Unique Binary Search Trees II
- 理解嵌入式开发中的一些硬件相关的概念
- Smart Card
- LayoutInflater的使用
- CPU卡中T=0通讯协议的分析与实现
- iReport利用Print Repeated Values做分组报表以及对重复值做distinct运算
- Leetcode: Unique Binary Search Trees II
- IOS系列——TextView和UITextField
- uva-673注意可能会给空串
- ie6图片下边有边距的解决办法
- iOS7隐藏状态栏 status Bar
- struct sigaction 结构解析 和linux信号类型解释
- Mustache 使用心得总结
- 在ubuntu 12.04 上将默认的gcc 4.6 改成gcc 4.4
- java 实现二叉树