codevs 3083 二叉树

简介: 题目描述 Description同学们都知道二叉树的定义,也都知道3个结点的二叉树有5种,现给你二叉树的结点个数n,要你编程输出不同形态二叉树的种数。输入描述 Input Description一个整数n输出描述 Output Description不同形态二叉树的种数。
题目描述 Description

同学们都知道二叉树的定义,也都知道3个结点的二叉树有5种,

现给你二叉树的结点个数n,要你编程输出不同形态二叉树的种数。

输入描述 Input Description
一个整数n
输出描述 Output Description

不同形态二叉树的种数。

样例输入 Sample Input

3

样例输出 Sample Output

5

数据范围及提示 Data Size & Hint

n<30

讨论过程:http://www.cnblogs.com/huashanqingzhu/p/5823166.html

http://www.cnblogs.com/hujunzheng/p/5040334.html

 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     long long n,i;
 6     long long h0=1,h1=1,h2;
 7     cin>>n;
 8     if(n==0||n==1) cout<<1<<endl;
 9     else
10     {
11         for(i=2;i<=n;i++)
12         {
13             h2=(4*i-2)*h1/(i+1);
14             h1=h2;
15             //cout<<h2<<endl;
16         }
17         cout<<h2<<endl;
18     }
19     return 0;
20 }

另一个做法,思路不谋而合:

何泓历的代码:

 1 #include <stdio.h>
 2 long long a[21]={0};
 3 long long fun(int n)
 4 {
 5     if(n==1||n==0) return 1;
 6     long long sum=0,i;
 7     for(i=0;i<n;i++)
 8     {
 9         if(a[i]==0) a[i]=fun(i);
10         if(a[n-1-i]==0) a[n-1-i]=fun(n-1-i);
11         sum+=a[i]*a[n-1-i];
12     }
13     return sum;
14 }
15 int main()
16 {
17     int n;
18     scanf("%d",&n);
19     printf("%lld\n",fun(n));
20     return 0;
21 }

 

 

 

相关文章
|
7月前
|
存储 算法
【数据结构入门指南】二叉树顺序结构: 堆及实现(全程配图,非常经典)
【数据结构入门指南】二叉树顺序结构: 堆及实现(全程配图,非常经典)
131 0
|
4月前
|
算法 关系型数据库 MySQL
一网打尽二叉树系列
文章全面介绍了二叉树的定义、分类和搜索(遍历)方式,包括满二叉树、完全二叉树、二叉搜索树、平衡二叉搜索树的概念,以及前序、中序、后序和非递归遍历方法,旨在帮助读者深入理解二叉树的基本概念和应用场景。
一网打尽二叉树系列
二叉树相关问题细谈递归(下)
二叉树相关问题细谈递归(下)
68 0
|
存储
二叉树相关问题细谈递归(上)
二叉树相关问题细谈递归
75 0
|
算法
代码随想录算法训练营第十九天 | LeetCode 654. 最大二叉树、617. 合并二叉树、700. 二叉搜索树中的搜索、98. 验证二叉搜索树
代码随想录算法训练营第十九天 | LeetCode 654. 最大二叉树、617. 合并二叉树、700. 二叉搜索树中的搜索、98. 验证二叉搜索树
62 0
|
程序员
程序员怎能不会二叉树系列(二)二叉树的四种遍历
程序员怎能不会二叉树系列(二)二叉树的四种遍历
|
算法 程序员
程序员怎能不会二叉树系列(一)简单了解二叉树
程序员怎能不会二叉树系列(一)简单了解二叉树
leetcode105/1382-构建二叉树与二叉平衡树(人生苦短,速速递归)
leetcode105/1382-构建二叉树与二叉平衡树(人生苦短,速速递归)
leetcode105/1382-构建二叉树与二叉平衡树(人生苦短,速速递归)
|
算法
代码随想录训练营day20| 654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树...
代码随想录训练营day20| 654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树...
【二叉树的基本功能】
1.创建一棵二叉树 根据需求,创建一棵满足条件的二叉树,创建方法可以有多种 2.求树的节点总个数 求树的节点总个数 后序遍历的思想: 分治算法,先求左子树节点个数,再求右子树节点个数,再+1,这个+1就是加上自己