凹入表示法
void Dispnode2(BTNode *b){//凹入表示法
BTNode *st[Maxsize];
BTNode *p;
int level[Maxsize][2],top=-1,n,i,width=4;
char *type;
if(b!=NULL)
{
top++;
st[top]=b;
level[top][0]=width;
level[top][1]=2;
while(top>-1)
{
p=st[top];
n=level[top][0];
switch(level[top][1])
{
case 0:type="左结点";break;
case 1:type="右结点";break;
case 2:type="根结点";break;
}
for(i=1;i<=n;i++)
cout<<" ";
cout<<p->data<<"("<<type<<")";
for(i=n+1;i<=Maxwidth;i+=2)
cout<<"__";
cout<<endl;
top--;
if(p->lchild!=NULL)
{
top++;
st[top]=p->lchild;
level[top][0]=n+width;
level[top][1]=1;
}
if(p->rchild!=NULL)
{
top++;
st[top]=p->rchild;
level[top][0]=n+width;
level[top][1]=0;
}
}
}
}