• 95. Unique Binary Search Trees II


    Given an integer n, generate all structurally unique BST's (binary search trees) that store values 1 ... n.

    Example:

    Input: 3
    Output:
    [
      [1,null,3,2],
      [3,2,null,1],
      [3,1,null,null,2],
      [2,1,3],
      [1,null,2,null,3]
    ]
    Explanation:
    The above output corresponds to the 5 unique BST's shown below:
    
       1         3     3      2      1
               /     /      /       
         3     2     1      1   3      2
        /     /                        
       2     1         2                 3
    
     

    Approach #1: C++.

    /**
     * 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) {
            if (n == 0) {
                return vector<TreeNode*>();
            } else {
                return generate_trees(1, n);
            }
        }
        
        vector<TreeNode*> generate_trees(int start, int end) {
            vector<TreeNode*> all_trees;
            if (start > end) {
                all_trees.push_back(NULL);
                return all_trees;
            }
            
            for (int i = start; i <= end; ++i) {
                vector<TreeNode*> left_trees = generate_trees(start, i - 1);
                vector<TreeNode*> right_trees = generate_trees(i + 1, end);
                
                for (TreeNode* l : left_trees) {
                    for (TreeNode* r : right_trees) {
                        TreeNode* curr_tree = new TreeNode(i);
                        curr_tree->left = l;
                        curr_tree->right = r;
                        all_trees.push_back(curr_tree);
                    }
                }
            }
            return all_trees;
        }
        
    };
    

      

    永远渴望,大智若愚(stay hungry, stay foolish)
  • 相关阅读:
    Java学习笔记(4)
    Idea常用功能汇总
    Java学习笔记(3)
    Java学习笔记(2)
    Java学习笔记(1)
    如何开发NPM包
    c#抓屏功能在DPI缩放后,截到的图片不完整的问题
    支持续传功能的ASP.NET WEB API文件下载服务
    ASP.NET MVC 阻止通过Url直接访问服务器上的静态文件
    VS2013/VS2015/VS2017通过oschina托管代码
  • 原文地址:https://www.cnblogs.com/h-hkai/p/10089234.html
Copyright © 2020-2023  润新知