Unique Binary Search Trees II

来源:互联网 发布:php 获取对象的类名 编辑:程序博客网 时间:2024/04/28 04:22
   1         3     3      2      1    \       /     /      / \      \     3     2     1      1   3      2    /     /       \                 \   2     1         2                 3

如上图所示,对于根节点,我们需要两个3,两个1

我们有5颗树,虽然有重合的部分,但是每棵树的元素都是单独new出来的

所以解题时迭代形成的树是多叉的迭代树,这里学习一下用数组实现多叉迭代树的一般格式

class Solution {public:vector<TreeNode *> generateTrees(int st, int ed) {vector<TreeNode *> res;TreeNode *root = NULL;if (st > ed) {res.push_back(root);return res;}vector<TreeNode *> left;vector<TreeNode *> right;for (int i = st; i <= ed; ++i) {left = generateTrees(st, i - 1);//生成左子树根节点数组right = generateTrees(i + 1, ed);//生成右子树根节点数组for (int j = 0; j < left.size(); ++j) {for (int k = 0; k < right.size(); ++k) {root = new TreeNode(i);//为每个左右元素的组合分配一个根节点root->left = left[j];root->right = right[k];res.push_back(root);//根节点压入数组}}}return res;}vector<TreeNode *> generateTrees(int n) {    if(n==0)        return vector<TreeNode *>{};    return generateTrees(1, n);}};


0 0
原创粉丝点击