leetcode95 Unique Binary Search Trees II
2016-01-06 15:10
555 查看
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.
View Code
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 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) { vector<TreeNode*> ans; ans=generate(1,n); return ans; } vector<TreeNode*> generate(int a,int b) { vector<TreeNode*> ans; if(a>b) return ans; if(a==b) { TreeNode *temp=new TreeNode(a); ans.push_back(temp); return ans; } vector<TreeNode*> vt1=generate(a+1,b); for(int i=0;i<vt1.size();i++) { TreeNode *tr1=new TreeNode(a);//不能放到外边,否则,ans中的tr1将会变成全部相同一个。(tr1相同,tr1->right不同,故应多分tr1) tr1->right=vt1[i]; ans.push_back(tr1); } vector<TreeNode*> vt2=generate(a,b-1); for(int i=0;i<vt2.size();i++) { TreeNode *tr2=new TreeNode(b); tr2->left=vt2[i]; ans.push_back(tr2); } for(int i=a+1;i<=b-1;i++) { vector<TreeNode*> vt31=generate(a,i-1); vector<TreeNode*> vt32=generate(i+1,b); for(int j=0;j<vt31.size();j++) { for(int k=0;k<vt32.size();k++) { TreeNode *tr3=new TreeNode(i); tr3->left=vt31[j]; tr3->right=vt32[k]; ans.push_back(tr3); } } } return ans; } };
View Code
相关文章推荐
- leetcode96 Unique Binary Search Trees
- BlockingQueue的使用
- 给UILabel中的文字加删除线
- Ubuntu Builder —— 一个制作自己的发行版的工具
- tasklet和workqueue的选择
- 将CodedUI Test 放到控制台程序中,模拟鼠标键盘操作
- 将CodedUI Test 放到控制台程序中,模拟鼠标键盘操作
- 关于xcode7.2以后 Build Settings Linking 默认没有 Other Linker Flags选项的解决方法
- IOS中UIScrollView的contentSize、contentOffset和contentInset属性
- UIImage 图片处理:截图,缩放,设定大小,存储
- iOS UIPageControl(分页控制器) 用法总结
- UIAlertView的简单用法
- UIImagePickerController本地化控件文字
- UITableViewCell - 4种显示格式
- arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别
- crm高速开发之QueryExpression
- 浅析NGUITools.DestroyImmediate和NGUITools.Destroy的区别
- UITextView和UITextField退出键盘的方式
- 通过bluestacks从google play获取apk安装包
- GPUImage实现水印