练习题目-平衡二叉树

时间:2023-02-13 21:40:07

NotDeep一直不擅长数据结构,于是找来slowlight帮助他。slowlight于是就从二叉平衡树讲起(纳尼?!):

平衡二叉树(Balanced Binary Tree)具有以下性质的一种树:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树

讲完了slowlight就给NotDeep出了一道练习题:一棵高度为h的二叉平衡树,它的节点数最少为多少?NotDeep表示依然难得令人发指,于是请你借助编程来帮帮他。

输入

输入数据有多组,每组一行,包括一个整数h (0<= h <= 1000)

输出

对于每个测试实例,要求输出一个答案,即最少的节点数。每个输出占一行。答案可能很大,答案需要对2015取模。

样例输入

1
2
100

样例输出

1
2
360
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	int h[1000]={-1};
	int a[1003];
	a[1]=1;
	a[2]=2;
	int i=3;
	while(i<=1002)
	{
		a[i]=a[i-1]+a[i-2]+1;
		a[i]=a[i]%2015;
		i++;
	}
	i=0;
	while((scanf("%d",&h[i]))!=EOF){i++;
	}
	i--;
	int j=0;
	while(j<=i)
	{
		printf("%d\n",a[h[j]]);
		j++;
	}
	return 0;
}