LeetCode(95) Unique Binary Search Trees II
来源:互联网 发布:电通安吉斯 知乎 编辑:程序博客网 时间:2024/05/16 19:24
在LeetCode(96) Unique Binary Search Trees思考的基础上进一步思考得出如下代码,动态规划。
/** * 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*> generate(vector<int> &nums, int index1, int index2) { vector<TreeNode*> result; if(index1 == index2) { TreeNode *p1 = new TreeNode(nums[index1]); result.push_back(p1); return result; } if(index1 + 1 == index2) { TreeNode *p1 = new TreeNode(nums[index1]); TreeNode *p2 = new TreeNode(nums[index2]); p1->left = NULL; p1->right = p2; p2->left = NULL; p2->right = NULL; result.push_back(p1); TreeNode *p3 = new TreeNode(nums[index1]); TreeNode *p4 = new TreeNode(nums[index2]); p4->left = p3; p4->right = NULL; p3->left = NULL; p3->right = NULL; result.push_back(p4); return result; } for(int k = index1; k <= index2; k++) { if(k == index1) { vector<TreeNode*> tmp1 = generate(nums, index1 + 1, index2); for(int i = 0; i < tmp1.size(); i++) { TreeNode *p1 = new TreeNode(nums[index1]); p1->right = tmp1[i]; result.push_back(p1); } continue; } if(k == index2) { vector<TreeNode*> tmp4 = generate(nums, index1, index2 - 1); for(int i = 0; i < tmp4.size(); i++) { TreeNode *p1 = new TreeNode(nums[index2]); p1->left = tmp4[i]; result.push_back(p1); } continue; } vector<TreeNode*> tmp2 = generate(nums, index1, k - 1); vector<TreeNode*> tmp3 = generate(nums, k + 1, index2); for(int i = 0; i < tmp2.size(); i++) { for(int j = 0; j < tmp3.size(); j++) { TreeNode *p1 = new TreeNode(nums[k]); p1->left = tmp2[i]; p1->right = tmp3[j]; result.push_back(p1); } } } } vector<TreeNode*> generateTrees(int n) { if(n == 0) { //TreeNode *p; vector<TreeNode*> result; result.push_back(NULL); return result; } vector<int> nums; for(int i = 0; i <= n; i++) nums.push_back(i); return generate(nums, 1, n); }};
参考水中的鱼
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
- 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: Unique Binary Search Trees II
- LeetCode : Unique Binary Search Trees II
- [LeetCode] Unique Binary Search Trees II
- Matrix学习
- 1037. Magic Coupon (25)
- inline陷阱问题
- windows下动态链接库的使用(实例)
- Keil4和Protues联调的做法
- LeetCode(95) Unique Binary Search Trees II
- ORACLE 体系结构详解
- 文件下载功能代码示例
- 为什么只有grant usage权限却可以增删改查
- DWR如何获得返回对象
- 第一篇博客从这里开始
- Centost5.5_X64 Linux安装oracle 11.2.0.3 报错
- LeeCode 109.Convert Sorted List to Binary Search Tree(将排序链表转化为BST) 解题思路和方法
- OC