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
    
    class Solution {
    private:
        vector<TreeNode*> generateTreesRec(int start, int end){
            vector<TreeNode*> v;
            if(start > end){
                v.push_back(NULL);
                return v;
            }
            for(int i = start; i <= end; ++i){
                vector<TreeNode*> left = generateTreesRec(start, i - 1);
                vector<TreeNode*> right = generateTreesRec(i + 1, end);
                TreeNode *node;
                for(int j = 0; j < left.size(); ++j){
                    for(int k = 0; k < right.size(); ++k){
                        node = new TreeNode(i);
                        node->left = left[j];
                        node->right = right[k];
                        v.push_back(node);
                    }
                }
            }
            return v;
        }
    public:
        vector<TreeNode *> generateTrees(int n) {
            return generateTreesRec(1, n);
        }
    };
  • 相关阅读:
    java-工具代码
    idea-常用快捷键
    idea-环境配置
    mysql-常用命令
    Java IO流学习总结
    Java类加载机制
    Struts2标签 %{ } %{# }详解
    EL语法
    SQL语句
    在servlet转向jsp页面的路径问题
  • 原文地址:https://www.cnblogs.com/Xylophone/p/3895850.html
Copyright © 2011-2022 走看看