给定节点数的二叉树排列组合

二叉树的排列组合

给定 n 个节点,计算可以构成多少种不同的二叉树

  1. n <= 1 时,二叉树的排列方式为 1 种

  2. 根据公式,计算
    h(n) = \frac{C_{2n}^n}{n+1}

  3. 代码块

    import java.util.Scanner;
    
    public class Pailiezuhe {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            long nodeNum = sc.nextLong();
            catalan(nodeNum);
            sc.close();
    
        }
    
        /**
         * 二叉树排列组合公式
         * @param nodeNum:节点个数
         * (2nodeNum 与 nodeNum 组合) / (nodeNum + 1)
         */
        public static void catalan(long nodeNum) {
            long zuhe = jiecheng(2 *nodeNum) / (jiecheng(nodeNum) * jiecheng((2 * nodeNum) - nodeNum));
            long result = zuhe / (nodeNum + 1);
            System.out.println(result);
        }
    
        /**
         * 阶乘计算函数(3!=6;5!=120),参数使用 long ,预防精度误差
         * @param num
         * @return
         */
        public static long jiecheng(long num) {
            if (num >=1) {
                return jiecheng(num - 1) * num;
            }
            return 1;
        } 
    }
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容