首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

标志非递归后序遍历二叉树,该如何解决

2012-05-20 
标志非递归后序遍历二叉树typedef struct{BiTNode *ptrint tag//0,1}SElemTypetypedef struct BiTNode{

标志非递归后序遍历二叉树
typedef struct{
  BiTNode *ptr;
  int tag;//0,1
}SElemType;
typedef struct BiTNode{
  TElemType data;
  BiTNode *lchild,*rchild;
}BiTNode,*BiTree;


基本栈操作。。。。。。。



void PostOrder(BiTree bt, void (*visit)(TElemType))
/* 使用栈,非递归后序遍历二叉树bt, */
/* 对每个结点的元素域data调用函数visit */
{  
  SElemType S;
  InitStack(S);
  SElemType p;
  p.ptr=bt;
  p.tag=0;  
  while(p.ptr||!StackEmpty(S))
  {  
  if(p.ptr&&!p.tag)
  {  
  Push(S,p);
  p.ptr=p.ptr->lchild;
  p.tag=0;
  }  
  else
  {  
  Pop(S,p);
  if(p.ptr->rchild&&!p.tag)
  {  
  p.tag=1;
  Push(S,p);
  p.ptr=p.ptr->rchild;
  p.tag=0;
  }
  else 
  {  
  visit(p.ptr->data);
  p.ptr=NULL;
  }  
  }
  }
}


不知道哪里错了,就是通不过作业测试平台,求教

[解决办法]
不好意思pop() 函数丢了些东西。

C/C++ code
intpop(void){   flag[top] = 0;   return stack[top--]->data;}
[解决办法]
看看我那个不需要标志的吧。

热点排行