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

    Given an integer 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
    

    Runtime: 28ms

     1 /**
     2  * Definition for a binary tree node.
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     vector<TreeNode*> generateTrees(int n) {
    13         vector<TreeNode* > result;
    14         if(!n) return result;
    15         return generateBST(1, n);
    16     }
    17     
    18     vector<TreeNode* > generateBST(int low, int high) {
    19         vector<TreeNode* > result;
    20         if(low > high) {
    21             result.push_back(NULL);
    22             return result;
    23         }
    24         
    25         for(int i = low; i <= high; i++) {
    26             vector<TreeNode* > leftSubtree = generateBST(low, i - 1);
    27             vector<TreeNode* > rightSubtree = generateBST(i + 1, high);
    28             
    29             for(int m = 0; m < leftSubtree.size(); m++) {
    30                 for(int n = 0; n < rightSubtree.size(); n++) {
    31                     TreeNode* root = new TreeNode(i);
    32                     root->left = leftSubtree[m];
    33                     root->right = rightSubtree[n];
    34                     result.push_back(root);
    35                 }
    36             }
    37         }
    38         
    39         return result;
    40     }
    41 };
  • 相关阅读:
    _1_html_框架
    _0_web_基础
    _0_工具
    虚拟机安装与使用
    NumPy数据类型
    NumPy Ndarray对象
    机器学习之K-近邻(KNN)算法
    vue项目如何打包扔向服务器
    Eslint 规则说明
    Python ssh 远程执行shell命令
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/5745358.html
Copyright © 2011-2022 走看看