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

     给定结点数n,结点值为1,2,...,n,求由这些结点可以构成的所有二叉查找树。

    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
    

    思路:递归构造,分别构造出左,右子树,然后组合成来。

    /**
     * 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 *> generateTrees(int n) 
    	{
            return generateTrees(1,n);
        }
    
    	vector<TreeNode *> generateTrees(int start, int end)
    	{
    		vector<TreeNode *> trees;
    		if (start > end)
    		{
    			trees.push_back(NULL);
    			return trees;
    		}
    		if (start==end)
    		{
    			trees.push_back(new TreeNode(start));
    			return trees;
    		}
    
    		for (int i=start; i<=end; ++i)
    		{
    			vector<TreeNode *> treesleft = generateTrees(start,i-1);
    			vector<TreeNode *> treesright = generateTrees(i+1,end);
    
    			for (size_t j=0; j<treesleft.size(); ++j)
    			{
    				for (size_t k=0; k<treesright.size(); ++k)
    				{
    					TreeNode *root = new TreeNode(i);
    					root->left = treesleft[j];
    					root->right = treesright[k];
    					trees.push_back(root);
    				}
    			}
    		}
    
    		return trees;
    	}
    };


     

  • 相关阅读:
    List<string>里的集合和字符串互转
    黑马程序员学习9
    黑马程序员学习7
    黑马程序员学习11
    黑马程序员学习10
    黑马程序员学习8
    黑马程序员学习12
    为什么Huffman编码不会发生冲突
    mule esb 配置maven 何苦
    php实现kafka功能开发 何苦
  • 原文地址:https://www.cnblogs.com/riskyer/p/3322924.html
Copyright © 2011-2022 走看看