[LeetCode]95.Unique Binary Search Trees II
来源:互联网 发布:椰族部落永久域名全拼 编辑:程序博客网 时间:2024/05/16 15:38
【题目】
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.
【分析】
参考:[LeetCode]96.Unique Binary Search Trees
【代码】
/********************************** 日期:2014-12-27* 作者:SJF0115* 题目: 95.Unique Binary Search Trees II* 来源:https://oj.leetcode.com/problems/unique-binary-search-trees-ii/* 结果:AC* 来源:LeetCode* 总结:**********************************/#include <iostream>#include <vector>using namespace std;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 generate(1, 0); }//if else{ return generate(1, n); } }//private: // 返回根节点结合 vector<TreeNode*> generate(int start,int end){ vector<TreeNode*> subTree; if(start > end){ subTree.push_back(NULL); return subTree; }//if // i作为根节点 for(int i = start;i <= end;i++){ // 以i为根节点的树,其左子树由[start,i-1]构成,其右子树由[i+1,end]构成。 // 返回的是不同二叉查找树的根节点,几种二叉查找树就返回几个根节点 vector<TreeNode*> leftSubTree = generate(start,i-1); vector<TreeNode*> rightSubTree = generate(i+1,end); // 左子树右子树跟根节点连接 // 以i为根的树的个数,等于左子树的个数乘以右子树的个数 for(int j = 0;j < leftSubTree.size();j++){ for(int k = 0;k < rightSubTree.size();k++){ TreeNode* node = new TreeNode(i); node->left = leftSubTree[j]; node->right = rightSubTree[k]; subTree.push_back(node); }//for }//for }//for return subTree; }//};// 先序遍历void PreOrder(TreeNode* root){ if(root == NULL){ return; }//if cout<<root->val<<" "; PreOrder(root->left); PreOrder(root->right);}int main() { Solution solution; vector<TreeNode*> vec = solution.generateTrees(3); for(int i = 0;i < vec.size();i++){ TreeNode* root = vec[i]; PreOrder(root); cout<<endl; }}
0 0
- [LeetCode]95.Unique Binary Search Trees II
- [Leetcode] 95. Unique Binary Search Trees II
- LeetCode --- 95. Unique Binary Search Trees II
- [leetcode] 95.Unique Binary Search Trees II
- [leetcode] 95. Unique Binary Search Trees II
- 95. Unique Binary Search Trees II LeetCode
- ***LeetCode 95. Unique Binary Search Trees II
- Leetcode 95. Unique Binary Search Trees II
- LeetCode *** 95. Unique Binary Search Trees II
- 【LeetCode】95. Unique Binary Search Trees II
- LeetCode 95. Unique Binary Search Trees II
- [leetcode]95. Unique Binary Search Trees II
- [leetcode]95. Unique Binary Search Trees II
- [LeetCode] 95. Unique Binary Search Trees II
- LeetCode 95. Unique Binary Search Trees II
- [leetcode] 95. Unique Binary Search Trees II
- Leetcode-95. Unique Binary Search Trees II
- 95. Unique Binary Search Trees II ,leetcode
- 图的邻接矩阵建立,广度深度搜索
- UIScrollView的Content Size, Content Inset属性
- java的Future和FutureTask
- 01(CodeforcesB水平)CQU新生周末狂欢赛G - Escape
- 不能导出p12和p12转pem
- [LeetCode]95.Unique Binary Search Trees II
- redhat下安装ruby2.2以及安装rubygems
- 悬停文字 悬浮提示 CtoolTipCtrl
- 三维重建:Dense Construction-KinectFusion的基本原理(尺度)
- 华为机试—字符串过滤
- 万向节死锁(Gimbal Lock)
- scala 简要:数组与映射
- 第十七周项目四(2):生日差几天
- CocoaPods安装指南