zoukankan      html  css  js  c++  java
  • [LeetCode]Unique Binary Search Trees II

    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.

       1         3     3      2      1
               /     /      /       
         3     2     1      1   3      2
        /     /                        
       2     1         2                 3
    

    confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.

    /**
     * Definition for binary tree
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        vector<TreeNode *> generate(int beg, int end)
        {
            vector<TreeNode* > ret;
            if (beg > end)
            {
                ret.push_back(NULL);
                return ret;
            }
            
            for(int i = beg; i <= end; i++)
            {
                vector<TreeNode* > leftTree = generate(beg, i - 1);
                vector<TreeNode* > rightTree = generate(i + 1, end);
                for(int j = 0; j < leftTree.size(); j++)
                    for(int k = 0; k < rightTree.size(); k++)
                    {
                        TreeNode *node = new TreeNode(i + 1);
                        ret.push_back(node);
                        node->left = leftTree[j];
                        node->right = rightTree[k];              
                    }           
            }
            
            return ret;
        }
        
        vector<TreeNode *> generateTrees(int n) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
            return generate(0, n - 1);
        }
    };
    

      

  • 相关阅读:
    Java
    Java
    Java
    其他
    Java
    Java
    Java
    正则
    Win10
    【转】Flask 上下文机制和线程隔离
  • 原文地址:https://www.cnblogs.com/Rosanna/p/3597221.html
Copyright © 2011-2022 走看看