leetcode-Unique Binary Search Trees II
2014-10-03 13:50
369 查看
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.
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
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: void fill(TreeNode* &node, int &num) { if(node == NULL)return; fill(node->left,num); node->val = num; num++; fill(node->right,num); return; } void copytree(TreeNode *src, TreeNode * &des) { if(src == NULL)return; TreeNode *node = new TreeNode(0); des = node; copytree(src->right,des->right); copytree(src->left,des->left); return; } void create(vector<TreeNode*> &ret,int n) { vector<vector<TreeNode*> > v; vector<TreeNode*> a; vector<TreeNode*> b; a.push_back(NULL); TreeNode *fnode = new TreeNode(0); b.push_back(fnode); v.push_back(a); v.push_back(b); for(int i = 2; i <= n; i++) { vector<TreeNode*> c; for(int j = 0; j < i; j++) { int k = v[j].size(); int m = v[i-1-j].size(); for(int l = 0; l < k; l++) { for(int r = 0; r < m; r++) { TreeNode *node = new TreeNode(0); TreeNode *des = NULL; copytree(v[j][l],des); node->left = des; des = NULL; copytree(v[i-1-j][r],des); node->right = des; c.push_back(node); } } } v.push_back(c); } int length = v.size(); ret = v[length-1]; return; } vector<TreeNode *> generateTrees(int n) { vector<TreeNode*> ret; vector<TreeNode*> a; a.push_back(NULL); if(n == 0)return a; create(ret,n); int len = ret.size(); for(int i = 0; i < len; i++) { int num = 1; fill(ret[i],num); } return ret; } };
相关文章推荐
- 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 95. 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
- 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 I&II
- leetcode-Unique Binary Search Trees II
- LeetCode解题报告—— Reverse Linked List II & Restore IP Addresses & Unique Binary Search Trees II
- 2 Unique Binary Search Trees II_Leetcode
- leetcode 刷题之路 50 Unique Binary Search Trees II
- Unique Binary Search Trees II -- LeetCode
- Leetcode: Unique Binary Search Trees II
- LeetCode(95) Unique Binary Search Trees II
- LeetCode之Unique Binary Search Trees & Unique Binary Search Trees II