LeetCode: Unique Binary Search Trees II
来源:互联网 发布:上海行知实验中学 编辑:程序博客网 时间:2024/06/04 19:15
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) { if(n == 0) return *buildTree(1, 0); return *buildTree(1, n); }private: vector<TreeNode *>* buildTree(int start, int end) { vector<TreeNode* >* cur = new vector<TreeNode *>(); if(start > end) { (*cur).push_back(NULL); return cur; } for(int i = start; i <= end; i++) { vector<TreeNode* > *left = buildTree(start, i-1); vector<TreeNode* > *right = buildTree(i+1, end); for(int l = 0; l < (*left).size(); l++) { for(int r = 0; r < (*right).size(); r++) { TreeNode *root = new TreeNode(i); root->left = (*left)[l]; root->right = (*right)[r]; (*cur).push_back(root); } } } return cur; }};
Round 2:
/** * 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; dfs(1, n, result); return result; }private: void dfs(int start, int end, vector<TreeNode*> &cur) { if(start > end) { cur.push_back(NULL); return; } for(int i = start; i <= end; i++) { vector<TreeNode *> left; dfs(start, i-1, left); vector<TreeNode *> right; dfs(i+1, end, right); for(int x = 0; x < left.size(); x++) for(int y = 0; y < right.size(); y++) { TreeNode *node = new TreeNode(i); node->left = left[x]; node->right = right[y]; cur.push_back(node); } } }};
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
- HDU 2647 Reward 分层拓扑排序
- 田忌赛马(较难贪心)
- csv helper
- 内存
- jsp+mysql开发网站留言板源代码下载
- LeetCode: Unique Binary Search Trees II
- 深入理解javascript原型和闭包(2)--函数和对象的关系
- C++返回操作数类型的字节数
- Chromium Graphics: GPU客户端之间同步机制的原理和实现分析-Part I
- 自然数平方和与立方和问题
- hdu 3853 LOOPS (概率dp)
- 我与C++的幸福生活
- [Sqlite] 移动嵌入式数据库Sqlite的日常SQL操作语句汇总
- 八目 -- 儒