码迷,mamicode.com
首页 > 编程语言 > 详细

二叉树的中序、先序、后序遍历非递归遍历算法(使用堆栈,用循环实现)

时间:2017-02-09 21:52:42      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:color   输出   void   node   stack   tree   position   images   http   

技术分享技术分享

 1 typedef struct TreeNode *BinTree;
 2 typedef    BinTree Position; 
 3 struct TreeNode{
 4     ElementType Data;
 5     BinTree Left;
 6     BinTree Right; 
 7 }; 
 8 BinTree BT;
 9 void InOrderTraversal(BinTree BT)//中序遍历非递归遍历算法(使用堆栈,用循环实现)
10 {
11     BinTree T=BT;
12     Stack S=CreakStack(MaxSize);//创建并初始化堆栈S
13     while(T||!IsEmpty(S)){
14         while(T){//一直向左并将沿途结点压入堆栈
15             Push(S,T);
16             T=T->Left; 
17         }
18         if(!IsEmpty(S)){
19             T=Pop(S);//结点弹出堆栈
20             printf("%5d",T->Data);//(访问)打印结点
21             T=T->Right;//转向右子树  
22         } 
23     } 
24 }
25 void PreOrderTraversal(BinTree BT)//先序遍历非递归遍历算法(使用堆栈,用循环实现)
26 {
27     BinTree T=BT;
28     Stack S=CreakStack(MaxSize);//创建并初始化堆栈S
29     while(T||!IsEmpty(S)){
30         while(T){//一直向左并将沿途结点压入堆栈
31             printf("%5d",T->Data);//(访问)打印结点
32             Push(S,T);
33             T=T->Left; 
34         }
35         if(!IsEmpty(S)){
36             T=Pop(S);//结点弹出堆栈
37             T=T->Right;//转向右子树  
38         } 
39     } 
40 }  
41 void PostOrderTraversal( BinTree BT )//后序遍历非递归遍历算法(使用堆栈,用循环实现)  
42 {  
43    BinTree T BT;  
44    Stack S = CreatStack( MaxSize ); /*创建并初始化堆栈S*/  
45    Stack Q = CreatStack( MaxSize ); /*创建并初始化堆栈Q,用于输出反向*/  
46    while( T || !IsEmpty(S) ){  
47        while(T){ /*一直向右并将沿途结点压入堆栈*/  
48            Push(S,T);  
49            Push(Q,T);/*将遍历到的结点压栈,用于反向*/  
50            T = T->Right;  
51        }  
52        if(!IsEmpty(S)){  
53        T = Pop(S); /*结点弹出堆栈*/  
54        T = T->Left; /*转向左子树*/  
55        }  
56    }  
57    while( !IsEmpty(Q) ){  
58        T = Pop(Q);  
59        printf(“%5d”, T->Data); /*(访问)打印结点*/  
60    }  
61 } 

 

二叉树的中序、先序、后序遍历非递归遍历算法(使用堆栈,用循环实现)

标签:color   输出   void   node   stack   tree   position   images   http   

原文地址:http://www.cnblogs.com/chy89224/p/6383886.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!