二叉树的中序、先序、后序遍历非递归遍历算法(使用堆栈,用循环实现)
发表于:2025-02-16 作者:千家信息网编辑
千家信息网最后更新 2025年02月16日,typedef struct TreeNode *BinTree;typedef BinTree Position; struct TreeNode{ ElementType Data;
千家信息网最后更新 2025年02月16日二叉树的中序、先序、后序遍历非递归遍历算法(使用堆栈,用循环实现)
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安全错误
数据库的锁怎样保障安全
大连地区网络安全培训机构推荐
上海付正网络技术有限公司老板
经开区应用软件开发
软件开发工作证
edius连接服务器失败错误码
数据库 评论表
广东工业大学网络安全实验
ftp上传文件到服务器端口
ifid软件开发
服务器vnc登陆终端打不开
关于网络安全的活动名称
好事特软件数据库怎么删除
msde数据库引擎不兼容
满帮集团成都软件开发怎么样
杭州嵌入式软件开发流程
服务器主板 接线
举3个实例说明网络技术的应用
hostus配置服务器
hp 服务器报修电话
腾讯云服务器怎么查登录记录
山东省网络安全教育平台
黑豆网络技术有限公司
set 数据库
幻塔红石柱服务器哪个区人多
软件开发10个常识
河北 专业技术网络安全生态
桓台设备软件开发服务
网络安全手册歌
黑龙江省网络安全宣传仪式
易语言 多线程调用数据库