树的非递归中序表示法

这篇博客介绍了如何使用栈来实现二叉树的非递归中序遍历。通过创建一个辅助栈,当当前节点不为空时将其压入栈中并遍历左子树,然后在栈不空时弹出节点并访问,接着遍历右子树,实现了二叉树的中序遍历过程。示例代码用C++编写,包括了树的创建和遍历函数。
摘要由CSDN通过智能技术生成

树的非递归中序(栈操作)

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
typedef struct bintree
{
    char data;
    struct bintree *lc,*rc;

}bintree,*tr;
void creat(tr &T)
{char ch;
 cin>>ch;
 if(ch=='@')
   T=NULL;
 else
 {
     T=new bintree;
     T->data=ch;
     creat(T->lc);
     creat(T->rc);
 }
}
void travel(tr T)
{
   tr s[100];
   int top;
    top=0;
  while(T!=NULL||top!=0)
  {while(T!=NULL)
    {s[++top]=T;
     T=T->lc;
   }
   if(top!=0)
   {
       T=s[top--];
      cout<<T->data;
       T=T->rc;

   }
}
}
int main()
{tr T;
   int l;
   T=NULL;
   creat(T);
   travel(T);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值