LeetCode--Unique Binary Search Trees II
2017-11-12 17:02
417 查看
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.
思路:递归。这道题是上一题的加强版,要求得到具体的树,那么采用递归的方法,求出以k为根节点的树的个数(1<=k<=n),其中左子树小于k,右子树大于k,然后遍历每个节点左子树和右子树,从下到上递归求解二叉搜索树。
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
思路:递归。这道题是上一题的加强版,要求得到具体的树,那么采用递归的方法,求出以k为根节点的树的个数(1<=k<=n),其中左子树小于k,右子树大于k,然后遍历每个节点左子树和右子树,从下到上递归求解二叉搜索树。
/** * 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*>subTree; if(!n) return subTree; return generate(1,n); } vector<TreeNode*> generate(int start ,int end){ vector<TreeNode*>subTree; if(start>end){ subTree.push_back(NULL); return subTree; } for(int k=start;k<=end;k++){ vector<TreeNode*>leftSubs=generate(start,k-1); vector<TreeNode*>rightSubs=generate(k+1,end); for(int i=0;i<leftSubs.size();i++){ for(int j=0;j<rightSubs.size();j++){ TreeNode *node=new TreeNode(k); node->left=leftSubs[i]; 4000 node->right=rightSubs[j]; subTree.push_back(node); } } } return subTree; } };
相关文章推荐
- LeetCode "Unique Binary Search Trees II"
- leetcode——95——Unique Binary Search Trees II
- [leetcode]Unique Binary Search Trees II
- [leetcode][tree] Unique Binary Search Trees II
- 91_leetcode_Unique Binary Search Trees II
- Leetcode 95. Unique Binary Search Trees II
- LeetCode095 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(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: 95. Unique Binary Search Trees II [✗]
- LeetCode Unique Binary Search Trees II