二叉树的非递归实现中序遍历

来源:互联网 发布:电脑网络映射是断开的 编辑:程序博客网 时间:2024/06/05 00:23

     使用非递归算法实现二叉树的前序遍历

#include<stdio.h>#include<stdlib.h>#define maxn 100struct Bstreenode{     int vaule;  struct Bstreenode *left;   struct Bstreenode *right;};  struct stack  {      struct Bstreenode  *e[maxn];  int top;  };    struct Bstreenode *root;struct stack s; void init() {  s.top=0; }   void push(struct Bstreenode *temp)   {    s.e[s.top++]=temp;   }      struct Bstreenode  *pop(){         return s.e[--s.top]; }int isempty(){return s.top==0;}  void create(struct Bstreenode **t)  {   char temp;   struct  Bstreenode *p;   scanf("%c",&temp);   if(temp=='.')     *t=NULL;   else   {   p=(struct Bstreenode *)malloc(sizeof(Bstreenode));           p->vaule=temp;*t=p;  create(&(p->left));          create(&(p->right));     }}void inoder( struct Bstreenode *t){  struct Bstreenode *temp=t;  while(temp!=NULL||s.top!=0)  {  while(  temp!=NULL)  {     push(temp); temp=temp->left;  }  if(  s.top!=0)  {   temp=pop();      printf("%c",  temp->vaule);      temp=temp->right;  }}}  int main()  {  init();  create(&root);  inoder(root);  return 0;  }


0 0