LeetCode | Unique Binary Search Trees II
来源:互联网 发布:oracle导入数据 编辑:程序博客网 时间:2024/04/30 04:33
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
模拟,递归~
注意这里的递归是写在循环里的【因为要求返回数组】
虽然是把这些数强行推到了一个数组里面,但是好歹还是写出来了OTZ
class Solution {public: vector<TreeNode*> generateTrees(int n) { if(n==0){ vector<TreeNode*> result; return result; } vector<int> nodes; for(int i=1;i<=n;i++) nodes.push_back(i); return getTree(nodes); } //生成一颗子树,这棵子树里面有nodes个节点 vector<TreeNode*> getTree(vector<int>& nodes){ vector<TreeNode*> subTree; int n=nodes.size(); if(n==0){ subTree.push_back(NULL); return subTree; } for(int i=0;i<n;i++){ //选取一个节点 TreeNode* node=new TreeNode(nodes[i]); //左右孩子节点 vector<int> leftnodes,rightnodes; for(int j=0;j<i;j++) leftnodes.push_back(nodes[j]); for(int j=i+1;j<n;j++) rightnodes.push_back(nodes[j]); //左右孩子树 vector<TreeNode*> left=getTree(leftnodes); vector<TreeNode*> right=getTree(rightnodes); for(int k=0;k<left.size();k++){ for(int l=0;l<right.size();l++){ //选取一个节点 TreeNode* node=new TreeNode(nodes[i]); node->left=left[k]; node->right=right[l]; subTree.push_back(node); } } } return subTree; }};
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
- NodeJs之express
- C++:类继承、兼容性原则、初始化列表、同名函数
- 不使用loop创建长度为100的数组,并且元素值等于下标
- HDU 5808 BestCoder Round #86 Price List Strike Back (树状数组)
- Service层的性能优化
- LeetCode | Unique Binary Search Trees II
- Effective C++_Item10笔记
- 表达式合法判断(栈的使用)----去哪儿2016研发工程师编程题
- Effective C++_Item11笔记
- KMP
- Java的方向。。。
- POJ 3687 Labeling Balls 反向拓扑建图是个坑点
- Java单例模式详解
- leetcode 74. Search a 2D Matrix