lintcode:Unique Binary Search Trees II
来源:互联网 发布:万学海文考研 知乎 编辑:程序博客网 时间:2024/05/19 12:26
Given n, generate all structurally unique BST's (binary search trees) that store values 1...n.
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
Tags
/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right = NULL; * } * } */class Solution { private: TreeNode* clone(TreeNode *root) { if (root == NULL) return NULL; TreeNode *head = new TreeNode(root->val); head->left = clone(root->left); head->right = clone(root->right); return head; } vector<TreeNode *> generateTreesHelper(int start, int end) { vector<TreeNode *> retVtr; if (start > end) { retVtr.push_back(NULL); return retVtr; } TreeNode *root = NULL; for (int i=start; i<=end; i++) { root = new TreeNode(i); vector<TreeNode* > ltree = generateTreesHelper(start, i-1); vector<TreeNode* > rtree = generateTreesHelper(i+1, end); //双重循环来构建左右子树 for (int l=0; l<ltree.size(); l++) { for (int r=0; r<rtree.size(); r++) { root->left = ltree[l]; root->right = rtree[r]; retVtr.push_back(clone(root)); } } } return retVtr; } public: /** * @paramn n: An integer * @return: A list of root */ vector<TreeNode *> generateTrees(int n) { // write your code here return generateTreesHelper(1, n); }};
0 0
- lintcode:Unique Binary Search Trees II
- Unique Binary Search Trees II --lintcode
- lintcode: Unique Binary Search Trees
- Unique Binary Search Trees--lintcode
- Unique Binary Search Trees II
- Unique Binary Search Trees II
- Unique Binary Search Trees II
- Unique Binary Search Trees II
- Unique Binary Search Trees (& II)
- Unique Binary Search Trees II
- Unique Binary Search Trees II
- Unique Binary Search Trees II
- Unique Binary Search Trees II
- Unique Binary Search Trees II
- Unique Binary Search Trees II
- Unique Binary Search Trees II
- Unique Binary Search Trees II
- Unique Binary Search Trees II
- cpu_bitmap结构体解析
- Android设计模式应用--状态模式
- Android中的Spinner控件)
- Unity3d Shader UV移动
- 12. Integer to Roman
- lintcode:Unique Binary Search Trees II
- cf19B. Checkout Assistant 【01 背包】
- android的消息机制
- Hive与HBase的区别
- CERC 2009 Cav 扫描法 (uvaLive 4621 - Cav)
- 修正后的时间类
- socket server 服务端 带计算心跳。超时断链的控制
- block,inline和inline-block概念和区别
- 第五周项目1-三角形类的雏形(5)