Unique Binary Search Trees II

来源:互联网 发布:unity3d引擎源码 编辑:程序博客网 时间:2024/04/30 02:28

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

confused what "{1,#,2,3}" means? 

/** * 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 *>process(int beg, int end){vector<TreeNode *> res;if (beg > end || (beg == end && beg == 0)){ res.push_back(NULL); return res;}if (beg == end){res.push_back(new TreeNode(beg));return res;}for (int i = beg; i <= end; i++){vector<TreeNode *> left = process(beg, i-1);vector<TreeNode *> right = process(i+1, end);for (int m = 0; m < left.size(); m++)for (int n = 0; n < right.size(); n++){TreeNode * pNew = new TreeNode(i);pNew->left = left[m];pNew->right = right[n];res.push_back(pNew);}}return res;}    vector<TreeNode *> generateTrees(int n) {    return process(1, n);      }};


0 0
原创粉丝点击