C++打印二叉树形状
把二叉树按层序遍历的顺序放在e数组里,虚结点用逗号表示
void print()
{
int i;
int num=0;
int row=0;
for(i=0;e[i]!='#'&&i<100;i++)
{
num++;
}
for(i=0;i<10;i++)
{
if(pow(2,i)>=num)
{
row=i;
break;
}
}
int p=(int)pow(2,row)-1;
int temp;
row=0;
while(p!=0)
{
for(int i=0;i<num;i++)
{
if(i+1==pow(2,row))
{
row++;
cout<<endl;
for(int j=0;j<p;j++)
{
cout<<" ";
}
cout<<e[i];
temp=p*2+1;
p=(p-1)/2;
}
else
{
for(int j=0;j<temp;j++)
{
cout<<" ";
}
cout<<e[i];
}
}
}
cout<<endl;
}
注意:要加头文件 #include<math.h>
执行效果