二叉树的构建


#include
#include
#include
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 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< for(int i=1;i<=num-1;i=i*2)
{
//printf("%d ",i);
for(int j=1;j<=i;j++)
cout< cout< }
// for(int i=1;i<=num-1;i++)
// cout<// cout< return 0;
}

运行样例

8
6 4 5 7 8 2 1 3

//有可能很占空间。

eg-  1 2 3 4 5 6 7

tree[2^7];