PAT 1064 Complete Binary Search Tree

来源:互联网 发布:大数据算法导论 视频 编辑:程序博客网 时间:2024/06/07 08:41




题意: 给出一串数字,求这些数组组成的完全2叉树


思路和注意点:

1.完全2叉树,一般可以利用数组, 当完全二叉树中有n个数字,则数组长度为n。

例如当前数组下标为node,则node*2是左节点,node*2+1是右节点。

2.数组下标表示的二叉树是1~n,而非0~n

3.当树中的数字确定时,完全二叉树就确定了,和给出数字的顺序无关!

4.用中序遍历一步步将数组中的数字存入。详见代码。


//628K94MS#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#include<stack>#include<vector>using namespace std;#define inf 0x3f3f3f3f#define M 2500int ans[M],num[M];int ansi,n;void setCBT(int level){if(level > n)return ;setCBT(level*2);ans[level - 1] = num[ansi];ansi++;setCBT(level*2 + 1);}int main(){int i;cin>>n;for(i = 0; i< n;i++)scanf("%d",&num[i]);sort(num,num+n);ansi=0;setCBT(1);printf("%d",ans[0]);for(i=1;i<n;i++)printf(" %d",ans[i]);cout<<endl;}




.



原创粉丝点击