Hopes

Start Here..

 

先序、中序 遍历非递归算法

1.先序遍历非递归算法

  1. void PreOrderUnrec(Bitree *t)  
  2. {  
  3.     Stack s;  
  4.     StackInit(s);  
  5.     Bitree *p=t;  
  6.       
  7.     while (p!=NULL || !StackEmpty(s))  
  8.     {  
  9.         while (p!=NULL)             //遍历左子树   
  10.         {  
  11.             visite(p->data);  
  12.             push(s,p);  
  13.             p=p->lchild;    
  14.         }  
  15.           
  16.         if (!StackEmpty(s))         //通过下一次循环中的内嵌while实现右子树遍历   
  17.         {  
  18.             p=pop(s);  
  19.             p=p->rchild;          
  20.         }//endif   
  21.           
  22.     }//endwhile    
  23. }  

 

 

 

 

2.中序遍历非递归算法

  1. void InOrderUnrec(Bitree *t)  
  2. {  
  3.     Stack s;  
  4.     StackInit(s);  
  5.     Bitree *p=t;  
  6.       
  7.     while (p!=NULL || !StackEmpty(s))  
  8.     {  
  9.         while (p!=NULL)             //遍历左子树   
  10.         {  
  11.             push(s,p);  
  12.             p=p->lchild;  
  13.         }  
  14.           
  15.         if (!StackEmpty(s))  
  16.         {  
  17.             p=pop(s);  
  18.             visite(p->data);        //访问根结点   
  19.             p=p->rchild;            //通过下一次循环实现右子树遍历   
  20.         }//endif      
  21.           
  22.     }//endwhile   
  23. }  

 

 

 

posted on 2013-11-20 11:02 ** 阅读(163) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问  
 

导航

统计

公告

你好!

常用链接

留言簿(2)

随笔档案

文章分类

文章档案

新闻档案

相册

收藏夹

C#学习

友情链接

搜索

最新评论

阅读排行榜

评论排行榜