二叉树的中序、先序、后序遍历非递归遍历算法(使用堆栈,用循环实现)
发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,typedef struct TreeNode *BinTree;typedef BinTree Position; struct TreeNode{ ElementType Data;
千家信息网最后更新 2024年11月24日二叉树的中序、先序、后序遍历非递归遍历算法(使用堆栈,用循环实现)
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); /*(访问)打印结点*/ } }
堆栈
结点
算法
递归
循环
子树
并将
输出
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
家庭服务器和nas区别
戴尔服务器更换主板后注意事项
广东造服务器发布时间
网络安全工程师技术实务答案
软件开发坏境
小学生网络安全协会会徽
mc1.8服务器
进销存管理软件开发目的
太原的软件开发公司
国内新数据库
在服务器上搭建管理系统
财经咨询软件开发公司
辽宁网络安全知识竞赛名单
面向文档的数据库缺点
web服务器统计
数据库查触发器是什么
乌班图服务器安装步骤
怎么建立第二个数据库
服务器为什么需要定重启
哥伦比亚人下载软件开发
通州区网络安全和信息化
日本免费云服务器色
企智宝网络技术有限公司
从数据库查看存储容量
计算机网络技术有什么证吗
计算机工程与网络技术
erp软件开发团队
数据库数据仓库的最终目的是
网易服务器土豆
sqlite 复制数据库