二叉树的构建
#include<iostream>
#include<set>
#include<algorithm>
using namespace std;
int tree[100];
int create(int _tree[],int _node[],int len)
{
int i,max=1;
_tree[1]=_node[1];
int level=1;
for(i=2;i<=len;i++)
{
level=1;
while(_tree[level]!=0)
{
if(_node[i]<_tree[level])
level=level*2;
else level=level*2+1;
if(max<level)
max=level;
}
_tree[level]=_node[i];
}
return max;
}
int main()
{
int n,num;
cin>>n;
int node[n+1];
for(int i=1;i<=n;i++)
cin>>node[i];
num=create(tree,node,n);
int y=1;
int w=num-1;
cout<<num-1<<endl;
for(int i=1;i<=num-1;i=i*2)
{
//printf("%d ",i);
for(int j=1;j<=i;j++)
cout<<tree[y++]<<' ';
cout<<endl;
}
// for(int i=1;i<=num-1;i++)
// cout<<tree[i]<<" ";
// cout<<tree[num]<<endl;
return 0;
}
运行样例
8
6 4 5 7 8 2 1 3
//有可能很占空间。
eg- 1 2 3 4 5 6 7
tree[2^7];
本文作者:xxj112
本文链接:https://www.cnblogs.com/xxj112/p/16168003.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步