二叉树的中序、先序、后序遍历非递归遍历算法(使用堆栈,用循环实现)
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,typedef struct TreeNode *BinTree;typedef BinTree Position; struct TreeNode{ ElementType Data;
千家信息网最后更新 2025年11月09日二叉树的中序、先序、后序遍历非递归遍历算法(使用堆栈,用循环实现)
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安全错误
数据库的锁怎样保障安全
bak文件怎么导入数据库
网络安全校企合作方案
某大学考试数据库包含两个表
网络安全评估报告包含
衢州服务器铝合金外壳
福建省首届网络安全技能竞赛
服务器备份软件哪个好
桂电网络安全第三批
浪潮服务器警告
网络安全防范 课件
数据库中投影操作命令是
浪潮服务器分类
可信软件开发知乎
dell服务器tcm安全芯片
数据库多表全文检索
软件开发公司软件定制
茂名市互联网科技公司
系统的连接数据库
杭州房产数据库
云服务器上登录微信安全吗
快手上面老是显示无法访问服务器
杭州系统软件开发哪家可靠
奉贤区机电软件开发价格查询
软件开发的专业学校
什么是测量数据库
Funpinpin有服务器吗
服务器下只有一个网址502
dell服务器tcm安全芯片
海得容错服务器
网络安全管理技术是什么意思