LeetCode OJ Unique Binary Search Trees II

来源:互联网 发布:牛津鞋品牌 知乎 编辑:程序博客网 时间:2024/05/29 08:34

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? > read more on how binary tree is serialized on OJ.

https://leetcode.com/discuss/9790/java-solution-with-dp

偷偷改成了C++版本:

class Solution {public:vector<TreeNode *> generateTrees(int n) {vector<vector<TreeNode *> > dp(n + 1);dp[0].push_back(NULL);for (int len = 1; len <= n; len++) {for (int j = 0; j < len; j++) {for (int k1 = 0; k1 < dp[j].size(); k1++) {for (int k2 = 0; k2 < dp[len - j - 1].size(); k2++) {TreeNode * nodeL = dp[j][k1];TreeNode * nodeR = dp[len - j - 1][k2];TreeNode * node = new TreeNode(j + 1);node->left = nodeL;node->right = clone(nodeR, j + 1);dp[len].push_back(node);}}}}return dp[n];}TreeNode * clone(TreeNode * n, int offset) {if (!n) return NULL;TreeNode * node = new TreeNode(n->val + offset);node->left = clone(n->left, offset);node->right = clone(n->right, offset);return node;}};

0 0
原创粉丝点击