先序遍历的非递归遍历算法

Posted 锅里煮水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了先序遍历的非递归遍历算法相关的知识,希望对你有一定的参考价值。

先序遍历的非递归遍历算法:

 1 void InOrderTraversal(BinTree BT)
 2 { 
 3   BinTree T=BT;
 4   stack S=CreatStack(MaxSize)://创建并初始化堆栈S
 5   while(T || !IsEmpty(S)){
 6     While(T){//一直向左并将沿途节点压入堆栈
 7        printf("%5d",T->Data);//(访问)打印节点
 8        Push(S,T);
 9        T=T->left;
10     }
11     if(! IsEmpty(S)){
12     T=Pop(S);//节点弹出堆栈
13     T=T->Right;//转向右子树
14      }
15    }
16 }

 

以上是关于先序遍历的非递归遍历算法的主要内容,如果未能解决你的问题,请参考以下文章

二叉树先序非递归遍历C语言算法

数据结构算法实现-二叉树遍历的非递归算法

二叉树的非递归遍历

二叉树的非递归遍历(先序中序后序和层序遍历)

详解二叉树的遍历问题(前序后序中序层序遍历的递归算法及非递归算法及其详细图示)

用递归算法先序中序后序遍历二叉树