zoukankan      html  css  js  c++  java
  • 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

    Solution: 1. DFS directly. (from the Internet)
    2. DP + DFS. (my solution)
    a. Generate trees for 'n' from 1 to n. (DP)
    b. When generate trees for n = i, get the left and right subtrees
    by copying tree structures of dp[1...i-1]. (copy tree uses DFS)

     1 /**
     2  * Definition for binary tree
     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         return generateTreesRe(1, n);
    14     }
    15     
    16     vector<TreeNode*> generateTreesRe(int l, int r)
    17     {
    18         vector<TreeNode*> res;
    19         if(l > r) {
    20             res.push_back(NULL);
    21             return res;
    22         }
    23         
    24         for(int k = l; k <= r; k++) {
    25             vector<TreeNode*> left = generateTreesRe(l, k-1);
    26             vector<TreeNode*> right = generateTreesRe(k+1, r);
    27             for(int i = 0; i < left.size(); i++) {
    28                 for(int j = 0; j < right.size(); j++) {
    29                     TreeNode* root = new TreeNode(k);
    30                     root->left = left[i];
    31                     root->right = right[j];
    32                     res.push_back(root);
    33                 }
    34             }
    35         }
    36         return res;
    37     }
    38 };
  • 相关阅读:
    Source Insight 安装使用
    size_t和ssize_t
    jquery ui autoComplete自动完成
    一个php类 Autoloader
    php register_shutdown_function
    mysql concat和group_concat
    nginx反向代理
    6.关于QT中的内存管理,动态的制作,动态库的调用,静态库的制作
    Sublime Text2 按shift键选择不了的问题
    javascript--瀑布流
  • 原文地址:https://www.cnblogs.com/zhengjiankang/p/3656160.html
Copyright © 2011-2022 走看看