c_cpp 独特的二叉搜索树。给定n,生成存储值1 ... n的所有结构上唯一的BST(二叉搜索树)。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 独特的二叉搜索树。给定n,生成存储值1 ... n的所有结构上唯一的BST(二叉搜索树)。相关的知识,希望对你有一定的参考价值。


vector<treenode*> generate_unique_trees(int n) {
    vector<treenode*> res;
    dfs(res, 1, n);
    return res;
}

void dfs(vector<treenode*> &res, int low, int high) {
    if(low > high) {
        res.push_back(NULL);
        return;
    }
    for(int i=low; i<high; i++) {
        vector<treenode*> left_trees, right_trees;
        dfs(left_trees, low, i-1);
        dfs(right_trees, i+1, high);
        // POS1
        for(int j=0; j<left_trees.size(); j++) {
            for(int k=0; k<right_trees.size(); k++) {
                treenode *root = new treenode(i);   // gist, should be here, not at POS1
                root->left = left_trees[j];
                root->right = right_trees[k];
                res.push_back(root);
            }
        }
    }
}

以上是关于c_cpp 独特的二叉搜索树。给定n,生成存储值1 ... n的所有结构上唯一的BST(二叉搜索树)。的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode练习(Python):动态规划类:第95题:不同的二叉搜索树 II:给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树。

分治---不同的二叉搜索树

leetcode95 不同的二叉搜索树II

95. 不同的二叉搜索树 II

95. 不同的二叉搜索树 II

树95. 不同的二叉搜索树 II