注册 登录
编程论坛 数据结构与算法

数据结构的二叉树先序

陆嘉文 发布于 2012-09-10 22:34, 652 次点击
程序代码:
Status  PreOderTraverse( Bitree T,Status(* Visit)(TElemType e)){
if(T){
   if(Visit(T->data))
     if(PreOderTraverse(T->lchild,Visit))
       if(PreOderTraverse(T-rchild,Visit))  return OK;
         return ERROR;
   }else rerurn OK;

}
这个 为什么要这么多if 语句啊,还有这个 OK 是1,ERROR是0;结果不就返回好多1啊
7 回复
#2
寒风中的细雨2012-09-11 18:56
递归呀,
#3
zhi__hui2012-09-12 06:43
循环嵌套啊
#4
陆嘉文2012-09-12 23:17
回复 楼主 陆嘉文
我想问的是地二个if语句,如果它为假,后面的第三个if语句不也不会去判断吗?那怎么去遍历啊1
#5
yunshuiyao2012-09-13 20:57
如果第二个if为假,那不就说明这个节点不存在吗!那就谈不上继续遍历左孩子和右孩子了。不需要继续向下遍历了,应该转向和它同层的右孩子的遍历了
#6
华杰19882012-09-22 14:34
两个都是ok啊
#7
zhu2240392012-09-27 11:11
搞那么长的英文 真的是要命  看的心思都木有了

只返回一个啊 ,得到结果就返回
#8
zhu2240392012-09-27 11:19
void dayin(tree *p)          /*先序遍历*/
{   
    if(p!=NULL)
    {
        printf("%d %d\n",p->i,p->treehigh);
        
      dayin(p->lift);
      dayin(p->right);
    }
}

1