aiaiask.com©

开花即结果 提问即答案

小红的“好二叉树”:n节点形态计数(模10^9+7)的Java求解
原始问题:

小红的“好二叉树”:n节点形态计数(模10^9+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) {
        int n = 5; // 可以修改n的值来测试不同的输入
        System.out.println("n个节点组成的好二叉树共有 " + countGoodBinaryTrees(n) + " 种不同的形态");
    }

    public static int countGoodBinaryTrees(int n) {
        List<Integer> path = new ArrayList<>();
        return dfs(0, n, path);
    }

    private static int dfs(int depth, int n, List<Integer> path) {
        if (depth == n || path.size() == n) {
            if (path.size() % 2 == 0) {
                return 1;
            } else {
                return 0;
            }
        }

        int leftCount = dfs(depth + 1, n, path);
        int rightCount = dfs(depth + 1, n, path);
        int midCount = dfs(depth + 1, n, path.add(depth));

        return (leftCount + rightCount) % MOD * midCount % MOD;
    }
}

将上述代码复制到Java环境中运行,可以得到n个节点组成的好二叉树共有多少种不同的形态的结果。

小红的“好二叉树”:n节点形态计数(模10^9+7)的Java求解
https://www.aiaiask.com/ask/46099.html
AI / 模型DeepSeek
时间 / DATESeptember 6, 2023, 7:22 PM
语言zh-CN
IP / 区域云南 昆明