今天终于完成自己的第一个算法(非递归遍历二叉树)

       这个二叉树节点的中序非递归遍历算法,好像和书上的并无两样,但它是我第一个自己看懂分析写出的,在书上看的时候,它好像怎么说就怎么实现了,我怎么就一下看不出,我做的时候是这么想的,首先写个只有左子树的树,写出它的算法,然后在用if语句,在适当的时候把某一个也是只含左子树的加进去,用if是不影响原来那个体系的,然后在试图多几个右支,也都是只含左支的右支,使在它双亲出栈后它就进展做和它双亲同样的工作。。。依次扩大,扩充,最后到任意……

void inorder_nonrecursive(BiTree T)
{
 int j=0;
 stack s;
 BiTree p;
 initstack(s);
 p=NULL;
 push(s,T);
 while(!stackempty(s))
 {
        while(gettop(s,p)&&p)
  {
   push(s,p->lchild);
  }
  pop(s,p);
  if(stackempty(s)) continue;
  pop(s,p);printf("%d:/n",p->data);
  if(p->rchild)push(s,p->rchild);
  else push(s,NULL);
 }
}   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值