我已经创建了一个通用树,我需要一个函数以 C++ 中的树格式打印它。我能够打印一棵二叉树,其中给定级别的空间量是固定的,但一般树可以在特定级别具有任意数量的节点,所以我如何计算所需的空间。这是我为二叉树创建的代码。
void prnttree(node* p,int a)
//a contains the value of maximum Height
{
int ht=0;
int i,c=0;
node* n=NULL;
end=0;
start=0;
q[end]=p;
do
{
if(p!=NULL)
{
//q is an array of pointers to node
q[++end]=p->left;
q[++end]=p->right;
}
else
{
q[++end]=n;
q[++end]=n;
}
if(pow(2,ht)-1==c)
{
cout<<"\n\n";
for(i=1;i<=(pow(2,a-ht+1)-2);i++)
cout<<" ";
}
if(p!=NULL)
cout<<p->data;
else
cout<<" ";
for(i=1;i<=(pow(2,a-ht+2)-1);i++)
cout<<" ";
p=q[++start];
c++;
if(c+1==pow(2,ht+1))
ht++;
}while(ht<=a);
}