95. Unique Binary Search Trees II LeetCode
2016-03-07 22:43
471 查看
题意:求1到n有多少种不同的平衡二叉树。
题解:dfs递归求。dfs(l,r);每次枚举根节点i,然后dfs(l,i-1),dfs(i + 1,r),得到左右子树的根,然后组合就得到以i为根节点的子树。
题解:dfs递归求。dfs(l,r);每次枚举根节点i,然后dfs(l,i-1),dfs(i + 1,r),得到左右子树的根,然后组合就得到以i为根节点的子树。
/** * 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*> dfs(int l,int r) { vector<TreeNode*> ans; TreeNode* root = NULL; if(l > r) { ans.push_back(root); return ans; } for(int i = l; i <= r; i++) { vector<TreeNode*> left = dfs(l,i - 1); vector<TreeNode*> right = dfs(i + 1,r); for(int j = 0; j < left.size(); j++) { for(int k = 0; k < right.size(); k++) { root = new TreeNode(i); root->left = left[j]; root->right = right[k]; ans.push_back(root); } } } return ans; } vector<TreeNode*> generateTrees(int n) { vector<TreeNode*> ans; ans.clear(); if(n == 0) return ans; ans = dfs(1,n); return ans; } };
相关文章推荐
- Win2003利用dfs(分布式文件系统)在负载均衡下的文件同步配置方案
- win2003分布式文件系统(dfs)配置方法[图文详解]
- win2003分布式文件系统及其部署 图文教程
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- Hadoop2.6+jdk8的安装部署(1)——使用jar包安装部署【详细】
- Hadoop FS Shell
- DFS使用方法总结
- leetcode----Longest Substring Without Repeating Characters
- FastDFS注意事项
- 无忧技术带您预览DFS(分布式文件系统)管理控制台
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap