[LeetCode] 96. Unique Binary Search Trees

    xiaoxiao2026-04-22  4

    思路: 动态规划. 开辟一个长度为n + 1的数组, 将前两项初始化为1, 这两个是树为空树或只有一个根节点的情况. 剩下的从1到n每个数都可以作为根节点, 当任意节点i做根节点时, 所有小于i的节点都要在它左子树边, 大于i的节点都要在它的右子树边, 所以当i为根节点时, 它的总树数目就是它左子树的数量乘上右子树的数量.

    int numTrees(int n) { int counts[n + 1] = {0}; counts[0] = counts[1] = 1; for (int i = 2; i <= n; i++) for (int j = 1; j <= i; j++) counts[i] += counts[j - 1] * counts[i - j]; return counts[n]; }
    转载请注明原文地址: https://ju.6miu.com/read-1309119.html
    最新回复(0)