三层四层二叉树有多少种

rt,

 

三层四层二叉树有多少种,延伸下就是问题:二叉树不同层数的有多少种?

 

0层的二叉树有1种;a0 = 1;
一层的二叉树有1种;a1 = 1;
二层的二叉树有3种;a2 = 2*(a0*a1)+a1*a1 = 3;
三层的二叉树有2*(a0*a2+a1*a2)+a2*a2 = 21种;
四层的二叉树有2*(a0*a3+a1*a3+a2*a3)+a3*a3 = 651种;

 

C#

codes as below:

using System;

 

namespace CountTreeNumber

{

    class Program

    {

        static void Main(string[] args)

        {

            for (int i = 1; i <= 5; i++)

            {

                Console.WriteLine(CountTreeHelper.CountTree(i));

            }

 

            Console.ReadKey();

        }

    }

 

    class CountTreeHelper

    {

        public static double CountTree(double depth)

        {

            if (depth == 1)

                return 1;

 

            double count1 = CountTree(depth - 1);

 

            double countPart1 = 2 * count1;

 

            double count2=0;

            for (double i = 1; i < depth; i++)

            {

                count2 += CountTree(i);

            }

 

            double countPart2 = count1 * (count2) * 2;

 

            double duplcatedCountPart2 = count1 * count1;

 

            return countPart1 + countPart2 - duplcatedCountPart2;

        }

    }

}

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值