[Leetcode] Unique Binary Search Trees II
来源:互联网 发布:mysql from 多表 编辑:程序博客网 时间:2024/06/07 08:48
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
confused what "{1,#,2,3}"
means? > read more on how binary tree is serialized on OJ.
/** * 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: //[start,end] vector<TreeNode*>createTreeSub(int start,int end){ if(start >= end)return vector<TreeNode*>(1,NULL); vector<TreeNode*>result,left,right; for(int i = start;i < end;i++){ left = createTreeSub(start,i); right = createTreeSub(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]; result.push_back(root); } } return result; } vector<TreeNode*> generateTrees(int n) { return createTreeSub(1,n+1); }};
class Solution {public: /* use heap to avoid vector object ctor and dtor */ //[start,end] vector<TreeNode*>*createTreeSub(int start,int end){ vector<TreeNode*>*result,*left,*right; result = new vector<TreeNode*>(); if(start >= end)result->push_back(NULL); for(int i = start;i < end;i++){ left = createTreeSub(start,i); right = createTreeSub(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->at(l); root->right = right->at(r); result->push_back(root); } } return result; } vector<TreeNode*> generateTrees(int n) { return *createTreeSub(1,n+1); }};
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
- 源码安装lustre文件系统
- 软件测试管理
- Android关于Spinner的使用(更换字体颜色,下拉列表的条目布局)
- NSTask Tutorial for Mac OS X
- ActionProgress: CCProgressTo 和 CCProgressTimer
- [Leetcode] Unique Binary Search Trees II
- QT5入门之14 - QString
- IE不支持getElementsByClassName最终完美解决方案
- 补码的理解
- MJRefresh使用方法
- C++线程局部存储(TLS)
- 详解Qt样式/颜色机制:调色板(QPalette)与样式表(Style Sheets)
- 深拷贝和浅拷贝
- Orchard模块创建