LeetCode - Unique Binary Search Trees II

来源:互联网 发布:锁相环编程 编辑:程序博客网 时间:2024/05/06 12:42

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

原创粉丝点击