二叉树非递归遍历
来源:互联网 发布:python的应用范围 编辑:程序博客网 时间:2024/05/18 12:01
先序遍历非递归遍历算法
/* 先序遍历非递归遍历算法 遇到一个结点,就把它压栈并输出,然后去遍历它的左子树; 当左子树遍历结束后,从栈顶弹出这个结点; 然后按其右指针再去先序遍历该结点的右子树。*/void InOrderTraversal( BinTree BT ){ BinTree T BT;Stack S = CreatStack( 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 InOrderTraversal( BinTree BT ){ BinTree T=BT;Stack S = CreatStack( 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 BFSOrderTraversal ( BinTree BT ){ Queue Q; BinTree T; if ( !BT ) return; /* 若是空树则直接返回 */ Q = CreatQueue( MaxSize ); /*创建并初始化队列Q*/ AddQ( Q, BT ); while ( !IsEmptyQ( Q ) ) { T = DeleteQ( Q ); printf(“%d\n”, T->Data); /*访问取出队列的结点*/ if ( T->Left ) AddQ( Q, T->Left ); if ( T->Right ) AddQ( Q, T->Right ); }}
阅读全文
0 0
- 非递归遍历二叉树
- 二叉树遍历非递归
- 非递归遍历二叉树
- 二叉树非递归遍历
- 二叉树非递归遍历
- 非递归遍历二叉树
- 二叉树非递归遍历
- 非递归遍历二叉树
- 非递归遍历二叉树
- 非递归遍历二叉树
- 非递归遍历二叉树
- 非递归遍历二叉树
- 二叉树非递归遍历
- 二叉树遍历--非递归
- 二叉树非递归遍历
- 非递归遍历二叉树
- 二叉树非递归遍历
- 二叉树非递归遍历
- 3(2)、uboot根目录下的mkconfig.mk文件代码
- 大学生走出校园踏入社会需坚持的原则
- div垂直水平居中的五种方法
- 史上最全编程语言列表_你掌握了哪些?
- 【Lua】Mac系统下配置SublimeText的Lua编译环境
- 二叉树非递归遍历
- 异常 The content of the adapter has changed but ListView did not receive a notification可能的一种解决方法
- Vue.js系列之vue-resource
- 前端知识谱图
- python第16篇之关键参数赋值(keyword)
- ESP8266 sdk开发入门
- [笔记]: 背包问题
- 设计模式分类与六大原则
- springboot学习9之admin监控配置