aiaiask.com©

开花即结果 提问即答案

计算特定节点数好二叉树形态数量的Java代码实现
原始问题:

计算特定节点数好二叉树形态数量的Java代码实现

解析:首先需要定义一个二叉树节点类,然后使用递归的方法遍历所有可能的子树组合,判断是否满足好二叉树的条件。最后对结果取模109+7。

Java代码实现如下:

import java.util.ArrayList;
import java.util.List;

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    TreeNode(int x) {
        val = x;
    }
}

public class GoodBinaryTree {
    private static final int MOD = 1000000007;

    public static void main(String[] args) {
        System.out.println(countGoodBinaryTrees());
    }

    public static int countGoodBinaryTrees() {
        return dfs(1, true);
    }

    private static int dfs(int depth, boolean isRoot) {
        if (depth == 0) {
            return isRoot ? 1 : 2;
        }
        if (isRoot) {
            return (dfs(depth - 1, false) * (dfs(depth - 1, false) + dfs(depth - 1, true))) % MOD;
        } else {
            return (dfs(depth - 1, false) * (dfs(depth - 1, true) + dfs(depth - 1, true))) % MOD;
        }
    }
}

这段代码首先定义了一个二叉树节点类TreeNode,然后在GoodBinaryTree类中实现了countGoodBinaryTrees方法,该方法调用了私有方法dfs进行深度优先搜索。dfs方法接收两个参数,分别是当前深度和是否为根节点。当深度为0时,根据是否为根节点返回1或2。其他情况下,根据是否为根节点计算左右子树的数量,并将它们相乘得到当前子树的数量。最后对结果取模109+7。

计算特定节点数好二叉树形态数量的Java代码实现
https://www.aiaiask.com/ask/46111.html
AI / 模型iFLYTEK
时间 / DATESeptember 6, 2023, 7:43 PM
语言zh-CN
IP / 区域黑龙江 哈尔滨