二叉树的中序遍历的递归定义如下:
如果二叉树为空,则执行空操作。如果二叉树非空,则执行以下操作:
(1)中序遍历左子树。
(2)访问根结点。
(3)中序遍历右子树。
<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1025" o:ole="" type="#_x0000_t75" style="width: 115.5pt; height: 102.75pt"><imagedata o:title="" src="file:///C:/DOCUME~1/user/LOCALS~1/Temp/msohtml1/01/clip_image001.emz"></imagedata></shape>
二叉树的中序遍历非递归算法实现如下。
void InOrderTraverse(BiTree T)
/*中序遍历二叉树的非递归实现*/
{
BiTree stack[MaxSize]; /*定义一个栈,用于存放结点的指针*/
int top; /*定义栈顶指针*/
BitNode *p; /*定义一个结点的指针*/
top=0; /*初始化栈*/
p=T;
while(p!=NULL||top>0)
{
while(p!=NULL) /*如果p不空,访问根结点,遍历左子树*/
{
stack[top++]=p; /*将p入栈*/
p=p->lchild; /*遍历左子树*/
}
if(top>0) /*如果栈不空*/
{
p=stack[--top]; /*栈顶元素出栈*/
printf(“%<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="2" unitname="C">2c</chmetcnv>”,p->data); /*访问根结点*/
p=p->rchild; /*遍历右子树*/
}
}
}
分享到:
相关推荐
二叉树遍历问题 二叉树遍历问题-前序, 中序, 后序二叉树遍历问题-前序, 中序, 后序二叉树遍历问题-前序, 中序, 后序二叉树遍历问题-前序, 中序, 后序二叉树遍历问题-前序, 中序, 后序二叉树遍历问题-前序...
用C++写的二叉树先序遍历、中序遍历和后序遍历非递归算法
一个简单的课程设计,使用Java来实现二叉树的中序遍历
二叉树 中序遍历自己写的c++实现,希望大家受益
完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全...
实现了数据结构中二叉树的中序遍历,是用递归做的,程序简单易懂。
根据先序与中序遍历结果建立二叉树 输入为: 第一行:二叉树的先序遍历结果 第二行:二叉树的中序遍历结果 例如: ①输入aa则返回的指针指向的二叉树应该就是仅有一个节点,值为a. ②输入123213则返回的指针指向...
数据结构C++二叉链表的先序遍历、中序遍历和后序遍历实现
c++环境下 二叉树的存储结构及实现 中序遍历
课程设计报告数据结构二叉树遍历演示
用C++写的,包括二叉树的构建,二叉树的先序遍历、中序遍历和后序遍历非递归算法。
python python_leetcode面试题解之第94题二叉树的中序遍历_题解
c++代码,能够根据前序序列、中序序列生成二叉树;能够一步生成,也可以一步步自动生成。 设计前序遍历,中序遍历,后序遍历,层次遍历;
用C语言对输入二叉树节点进行中序遍历,输出遍历顺序。包括递归实现和非递归实现两种方式。还有哈夫曼编码
小小学习,C语言数据结构,中序遍历二叉树非递归算法
二叉树的中序线索化及中序遍历,代码可运行
C语言实现二叉树的中序遍历(非递归),本人亲自写的!
C语言实现二叉树的中序遍历(递归)。大家下载看看哦!有用的!
二叉树已知后序和中序遍历求前序遍历,C++编写已通过编译
java编程,二叉树的中序遍历,递归实现