广告
返回顶部
首页 > 资讯 > 数据库 >二叉树的中序、先序、后序遍历非递归遍历算法(使用堆栈,用循环实现)
  • 924
分享到

二叉树的中序、先序、后序遍历非递归遍历算法(使用堆栈,用循环实现)

2024-04-02 19:04:59 924人浏览 泡泡鱼
摘要

typedef struct Treenode *BinTree; typedef BinTree Position;  struct TreeN

 二叉树的中序、先序、后序遍历非递归遍历算法(使用堆栈,用循环实现)

 二叉树的中序、先序、后序遍历非递归遍历算法(使用堆栈,用循环实现)

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 );   
   Stack Q = CreatStack( MaxSize );   
   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);   
   }  
}


您可能感兴趣的文档:

--结束END--

本文标题: 二叉树的中序、先序、后序遍历非递归遍历算法(使用堆栈,用循环实现)

本文链接: https://www.lsjlt.com/news/42279.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 二叉树的中序、先序、后序遍历非递归遍历算法(使用堆栈,用循环实现)
    typedef struct TreeNode *BinTree; typedef BinTree Position;  struct TreeN...
    99+
    2022-10-18
  • C++非递归实现二叉树的前中后序遍历
    目录二叉树的前序遍历二叉树的中序遍历二叉树的后序遍历二叉树的前序遍历 在不使用递归的方式遍历二叉树时,我们可以使用一个栈模拟递归的机制。二叉树的前序遍历顺序是:根 → 左子树 → ...
    99+
    2022-11-12
  • Python 递归式实现二叉树前序,中序,后序遍历
    目录1.前序遍历2.中序遍历3.后序遍历4.测试5.结果6.补充6.1N叉树前序遍历记忆点: 前序:VLR中序:LVR后序:LRV 举例: 一颗二叉树如下图所示: 则它的前序、中...
    99+
    2022-11-13
  • C++非递归如何实现二叉树的前中后序遍历
    小编给大家分享一下C++非递归如何实现二叉树的前中后序遍历,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!二叉树的前序遍历在不使用递归的方式遍历二叉树时,我们可以使...
    99+
    2023-06-21
  • java非递归实现之二叉树的前中后序遍历详解
    二叉树的前中后序遍历 核心思想:用栈来实现对节点的存储。一边遍历,一边将节点入栈,在需要时将节点从栈中取出来并遍历该节点的左子树或者右子树,重复上述过程,当栈为空时,遍历完成。 前序...
    99+
    2022-11-12
  • 怎么用Python递归式实现二叉树前序,中序,后序遍历
    今天小编给大家分享一下怎么用Python递归式实现二叉树前序,中序,后序遍历的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。记...
    99+
    2023-06-29
  • Python用非递归实现二叉树中序遍历代码分享
    这篇文章主要介绍“Python用非递归实现二叉树中序遍历代码分享”,在日常操作中,相信很多人在Python用非递归实现二叉树中序遍历代码分享问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python用非递归实...
    99+
    2023-06-02
  • Java 数据结构中二叉树前中后序遍历非递归的具体实现详解
    目录一、前序遍历1.题目描述2.输入输出示例3.解题思路4.代码实现二、中序遍历1.题目描述2.输入输出示例3.解题思路4.代码实现三、后序遍历1.题目描述2.输入输出示例3.解题思...
    99+
    2022-11-12
  • 刷题系列 - Python中怎么通过非递归实现二叉树前序遍历
    这期内容当中小编将会给大家带来有关刷题系列 - Python中怎么通过非递归实现二叉树前序遍历,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。二叉树前序遍历(Binary Tree Preorder Tra...
    99+
    2023-06-02
  • 如何进行Java 数据结构中二叉树前中后序遍历非递归的具体实现
    本篇文章为大家展示了如何进行Java 数据结构中二叉树前中后序遍历非递归的具体实现,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、前序遍历1.题目描述给你二叉树的根节点 root ,返回它节点值的...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作