二叉树的中序、先序、后序遍历非递归遍历算法(使用堆栈,用循环实现)
admin
2023-05-28 06:01:22
0次

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

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

typedef struct TreeNode *BinTree;
typedef	BinTree Position; 
struct TreeNode{
	ElementType Data;
	BinTree Left;
	BinTree Right; 
}; 
BinTree BT;
void InOrderTraversal(BinTree BT)//中序遍历非递归遍历算法(使用堆栈,用循环实现)
{
	BinTree T=BT;
	Stack S=CreakStack(MaxSize);//创建并初始化堆栈S
	while(T||!IsEmpty(S)){
		while(T){//一直向左并将沿途结点压入堆栈
			Push(S,T);
			T=T->Left; 
		}
		if(!IsEmpty(S)){
			T=Pop(S);//结点弹出堆栈
			printf("%5d",T->Data);//(访问)打印结点
			T=T->Right;//转向右子树  
		} 
	} 
}
void PreOrderTraversal(BinTree BT)//先序遍历非递归遍历算法(使用堆栈,用循环实现)
{
	BinTree T=BT;
	Stack S=CreakStack(MaxSize);//创建并初始化堆栈S
	while(T||!IsEmpty(S)){
		while(T){//一直向左并将沿途结点压入堆栈
			printf("%5d",T->Data);//(访问)打印结点
			Push(S,T);
			T=T->Left; 
		}
		if(!IsEmpty(S)){
			T=Pop(S);//结点弹出堆栈
			T=T->Right;//转向右子树  
		} 
	} 
}  
void PostOrderTraversal( BinTree BT )//后序遍历非递归遍历算法(使用堆栈,用循环实现)  
{  
   BinTree T BT;  
   Stack S = CreatStack( MaxSize ); /*创建并初始化堆栈S*/  
   Stack Q = CreatStack( MaxSize ); /*创建并初始化堆栈Q,用于输出反向*/  
   while( T || !IsEmpty(S) ){  
       while(T){ /*一直向右并将沿途结点压入堆栈*/  
           Push(S,T);  
           Push(Q,T);/*将遍历到的结点压栈,用于反向*/  
           T = T->Right;  
       }  
       if(!IsEmpty(S)){  
       T = Pop(S); /*结点弹出堆栈*/  
       T = T->Left; /*转向左子树*/  
       }  
   }  
   while( !IsEmpty(Q) ){  
       T = Pop(Q);  
       printf(“%5d”, T->Data); /*(访问)打印结点*/  
   }  
}


相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...