二叉树的中序、先序、后序遍历非递归遍历算法(使用堆栈,用循环实现)
发表于:2025-02-11 作者:千家信息网编辑
千家信息网最后更新 2025年02月11日,typedef struct TreeNode *BinTree;typedef BinTree Position; struct TreeNode{ ElementType Data;
千家信息网最后更新 2025年02月11日二叉树的中序、先序、后序遍历非递归遍历算法(使用堆栈,用循环实现)
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安全错误
数据库的锁怎样保障安全
ssh远程登陆服务器
护苗网络安全教育目标
嘉兴项目管理软件开发
雷鸟科技 场景互联网
服务器管理服务界面
网络技术对人类生活影响
智慧城市网络安全政策法规
网络安全法确立了什么
实时数据库能直接提供原始资源吗
王者荣耀太久没玩服务器不见了
数据库安全运维系统资源开发
网络安全的辩论赛主题
服务器都用哪些芯片
无法解析小米电视服务器地址
文件服务器迁移2012
狂热之刃服务器
软件开发成果管控
excel中含有数据库
视频服务器存储时间
tp查询数据库名字
mac上的服务器搭建
数据库集中审计
世界网络安全大赛wctf
聊城电商软件开发企业
ofm数据库建立
调用服务器接口
DELL 服务器吧
唐僧抠图软件开发
美国最新新增就业数据库
sql数据库数字库