先序,中序的非递归实现

接上题,实现比较简单的先序和中序

void PreOrder(BTree root)
{
  stack<BTreeNode> S;
  BTree p=root;
  S.push(root);
  while(p&&!S.empty())
  {
    while(p)
    {  
      visit(p->data);
      S.push(p);
       p=p->lchild;
    }
    if(!S.empty())
    {
      p=S.pop();
      p=p->rchild;
    }
  }
}

void PostOrder(BTree root)
{
   stack<BTreeNode> S;
   BTree p = root;
   S.push(root);
   while(p&&!S.empty())
   {
      while(p) 
      { 
          S.push(p);
          p=p->lchild;
      }
       if(!S.empty())
       {
          p=S.pop();
          visit(p->data);
          p=p->rchild;
      }
   }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容