LeetCode Unique Binary Search Trees II

来源:互联网 发布:ubuntu 忘记系统密码 编辑:程序博客网 时间:2024/06/06 01:19

题目:

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) {} * }; *///dfsclass Solution {public:vector<TreeNode *> generateTrees(int n) {vector<TreeNode *> res = dfs(1, n);return res;}private:vector<TreeNode *> dfs(int begin, int end) {vector<TreeNode *> ans;if (begin > end) {ans.push_back(NULL);return ans;}for (int i = begin; i <= end; i++) {vector<TreeNode *> leftTree = dfs(begin, i - 1);vector<TreeNode *> rightTree = dfs(i + 1, end);for (int m = 0; m < leftTree.size(); m++) {for (int n = 0; n < rightTree.size(); n++) {TreeNode *root = new TreeNode(i);root->left = leftTree[m];root->right = rightTree[n];ans.push_back(root);}}}return ans;}};


0 0
原创粉丝点击