对于2009年上半年软件设计师下午试题的一个分析,对于第五个空很多网上给出的答案都是ptr->rchild,本人认为应为q->elem->rchild,因为此时ptr已为空,ptr->rchild会报错,以下为本人写的测试程序,在c++ builder中测试通过
//---------------------------------------------------------------------------
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
#define NULL 0
typedef struct BtNode{
char data;
struct BtNode *lchild,*rchild;
}BiTNode,*BtTree;
typedef struct StNode{
BtTree elem;
struct StNode *link;
}StNode;
BtTree createBitTree()
{ char ch;
BtTree bt;
scanf("%c",&ch);
if(ch==' ') bt=NULL;
else
{if (ch!='#')
{ bt=(BtTree *)malloc(sizeof(BiTNode));
bt->data=ch;
bt->lchild=createBitTree();
bt->rchild=createBitTree();
}
else
return(bt);}
return(bt);
}
void visit(StNode *q)
{
printf(" %c ",q->elem->data);
}
int InOrder(BtTree root)
{
BtTree ptr;
StNode *q;
StNode *stacktop=NULL;
ptr=root;
while (ptr!=NULL || stacktop!=NULL) {
while (ptr!=NULL) {
q=(StNode *)malloc(sizeof(StNode));
if (q==NULL)
return -1;
q->elem=ptr;
q->link=stacktop;
stacktop=q;
ptr=ptr->lchild;
}
q=stacktop;
stacktop=q->link; //或为stacktop=stacktop->link;
visit(q);
ptr=q->elem->rchild; //如为ptr=ptr->rchild 运行报错
free(q);
}
return 0;
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/djcsch2001/archive/2009/10/17/4689093.aspx
原文链接: https://www.cnblogs.com/djcsch2001/archive/2011/05/03/2035151.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/24877
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!