二叉树问题

CAform 2003-09-12 01:19:39
void npreorder(bnode *BT)
/*用非递归的方法前序遍历以为根结点的二叉树*/
{bnode *stack[MAXNODE], *p;
int top;
if(BT==NULL)return;
top=0;
p=BT;
while(!(p==NULL&&top==0))/*这一句我看不懂,top不为零怎么会执行下去,知道是书
中错误还是我出了毛病????!!!*/
{
while (p!==NULL) /*将当前指针p压栈*/
{visit(BT);
if(top<(MAXNODE-1))
{
STACK[top]=p;
top++;
}
else
{prinft("栈溢出");return;}
p=p->lchild;
}
if(top==-1)return;
else
{
top--;/*从栈中弹出栈顶元素*/
p=stack[top];
p=p->rchild;
}
}
}
...全文
25 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
TianGuangZao 2003-09-12
  • 打赏
  • 举报
回复
个人觉得如果你把 while(!(p==NULL&&top==0)) {}分开来理解,是在是太太难,
连起来读就很容易搞懂,也不容易错。
读成:当 p 不等于 NULL 且 top 不等于 0 执行循环。
watchcat 2003-09-12
  • 打赏
  • 举报
回复
同意楼上的
ezhou 2003-09-12
  • 打赏
  • 举报
回复
是啊,前面有!
jyfcsdn 2003-09-12
  • 打赏
  • 举报
回复
!(p==NULL&&top==0))

if top != 0
then p==NULL && top == 0 result = false
then !(p==NULL && top == 0) result = true

so

while(true)

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧