数据结构中二叉树中序遍历的教学分析

合集下载

数据结构实验报告——中序遍历二叉树

数据结构实验报告——中序遍历二叉树

实验报告一,实验目的:·掌握二叉树的链式存储结构;·掌握构造二叉树的方法;·加深对二叉树的中序遍历的理解;二,实验方法:·用递归调用算法中序遍历二叉树。

三,实验步骤:·通过链式存储建立一颗二叉树。

·设计一个算法实现中序遍历二叉树。

四,具体实验步骤:#include<stdio.h>#include<stdlib.h>#define LEFT 0#define RIGHT 1#define TRUE 1#define FALSE 0typedef struct _BTNODE{char c;struct _BTNODE *lchild;struct _BTNODE *rchild;}BTNODE,*PBTNODE;void PrintBTree(PBTNODE p,int depth);void ConstructBTree(PBTNODE p);void InorderTraverse(PBTNODE p);void main(){PBTNODE p;p=(PBTNODE)calloc(1,sizeof(BTNODE));printf("Input the data:");ConstructBTree(p);PrintBTree(p,0);printf("Now InorderTraverse:");InorderTraverse(p);printf("\nPress any key to continue...");getchar();}void PrintBTree(PBTNODE p,int depth){int i;if(p==NULL){return;}else{for(i=0;i<depth;i++){printf("--");}printf(">");printf("%c\n",p->c);PrintBTree(p->lchild,depth+1);PrintBTree(p->rchild,depth+1);}}void ConstructBTree(PBTNODE p){int side;char c;side=LEFT;while(TRUE){scanf("%c",&c);if(c=='\n'){//printf("EOF\n");return;}// printf("%d\n",c);switch(c){case '|':break;case')':return;case',':side=RIGHT;break;case'(':if(side==LEFT){if(p->lchild==NULL){p->lchild=(PBTNODE)calloc(1,sizeof(BTNODE));}ConstructBTree(p->lchild);}else{if(p->rchild==NULL){p->rchild=(PBTNODE)calloc(1,sizeof(BTNODE));}ConstructBTree(p->rchild);}break;default:if(side==LEFT){p->lchild=(PBTNODE)calloc(1,sizeof(BTNODE));p->lchild->c=c;}else{p->rchild=(PBTNODE)calloc(1,sizeof(BTNODE));p->rchild->c=c;}}}}void InorderTraverse(PBTNODE p){if(p==NULL){return;}else{InorderTraverse(p->lchild);printf("[%c] ",p->c);InorderTraverse(p->rchild);}return;}五,实验过程:·输出:Input the date;·输入:1(2(3,4),5(6,7));·输出:Now InorderTraverse:【3】【2】【4】【1】【6】【5】【7】;六,上机实验体会:·体会到熟练掌握各种程序算法的重要性;·通过上机练习,充分理解了链式建立二叉树的算法;·形象的了解二叉树的结构,能够熟练的进行先序,中序,后序遍历二叉树。

数据结构二叉树遍历实验报告

数据结构二叉树遍历实验报告

数据结构二叉树遍历实验报告数据结构二叉树遍历实验报告一、引言本文档旨在详细介绍二叉树遍历的实验过程和结果。

二叉树是一种在计算机科学领域常用的数据结构,通过遍历二叉树可以获取树中的所有节点数据。

本实验将分别介绍前序遍历、中序遍历和后序遍历这三种常见的遍历方法。

二、实验目的本实验的目的是通过实际操作,加深对二叉树遍历方法的理解,并验证这些遍历方法的正确性和效率。

三、实验环境本实验使用的环境如下:●操作系统: Windows 10●开发工具: Visual Studio Code●编程语言: C++四、实验步骤1.创建二叉树数据结构1.1 定义二叉树节点的结构,包含数据和左右子节点指针。

1.2 创建一个二叉树类,包含插入节点、删除节点、查找节点等方法。

1.3 使用已有的数据集构建二叉树,确保树的结构合理。

2.前序遍历前序遍历是先访问根节点,然后递归地遍历左子树和右子树。

2.1 以递归方式实现前序遍历。

2.2 以迭代方式实现前序遍历。

3.中序遍历中序遍历是先遍历左子树,然后访问根节点,最后遍历右子树。

3.1 以递归方式实现中序遍历。

3.2 以迭代方式实现中序遍历。

4.后序遍历后序遍历是先遍历左子树,然后遍历右子树,最后访问根节点。

4.1 以递归方式实现后序遍历。

4.2 以迭代方式实现后序遍历。

五、实验结果1.前序遍历结果:[节点1数据] [节点2数据] [节点4数据] [节点5数据] [节点3数据]2.中序遍历结果:[节点4数据] [节点2数据] [节点5数据] [节点1数据] [节点3数据]3.后序遍历结果:[节点4数据] [节点5数据] [节点2数据] [节点3数据] [节点1数据]六、实验分析通过实验结果可以看出,不同的遍历顺序得到的节点顺序也不同。

前序遍历先访问根节点,中序遍历先遍历左子树,后序遍历先遍历右子树。

根据需要,可以选择合适的遍历方法来处理二叉树的节点数据。

七、结论本实验验证了前序遍历、中序遍历和后序遍历的正确性,并且对比了它们的不同。

二叉树的遍历教案

二叉树的遍历教案

课题二叉树的遍历学习目标:1、知识与技能掌握二叉树三种遍历的遍历原则和方法2、过程与方法通过体验、分析、讲授和实践探究,学会遍历二叉树3情感态度与价值观(!)通过遍历学习,培养学生细致严谨的思维习惯(2)促进学生对算法学习的热情,学习在平时生活中建模思想。

学情分析:本学期高一学生刚刚学习完数学选修科目3《算法》,对数据流程有比较深刻的认知,具备探究树理论的基础。

重难点:重点:二叉树特征;难点:二叉树的遍历规则的实际使用。

教学过程:活动一:一起游戏——汉诺塔游戏介绍:汉诺塔是一款WP7平台上源于印度一个古老传说的益智类游戏。

传说上帝创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上安大小顺序摞着64片黄金圆盘。

上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。

并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

游戏玩法:游戏里有三根金刚石柱子,在一根柱子上从下往上安大小顺序摞着64片黄金圆盘。

玩家需要做的是把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。

并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

活动二:二叉树1 特点:一棵由一个结点和两棵互不相交的分别称作根的左子树和右子树所组成的非空树,左右子树又同样都是二叉树。

遍历是对二叉树树的一种最基本的运算,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次。

2 几种遍历(1)前序遍历:中序遍历后序遍历(2)遍历规则步骤第一第二第三名称前序遍历访问根结点前序遍历左子树前序遍历右子树中序遍历中序遍历左子树访问根结点中序遍历右子树后序遍历后序遍历左子树后序遍历右子树风味根结点备注二叉树非空活动三:完成图5二叉树的前序遍历abcdeghi图5活动四:分组讨论完成右图二叉树的中序遍历和后序遍历中序CBDAEGF后序:CDBGFEA活动五:讨论探究完成图5二叉树的中序遍历和后序遍历中序:CBAFEGDHI后序:CBFGEIHDA活动五:知识拓展:1假设前序遍历是adbgcefh,中序遍历是dgbaechf,请你推演出该二叉树;2假设后序遍历是gbdehfca,中序遍历是dgbaechf,请你推演出该二叉树的前序遍历节奏把控:前序遍历是先访问根节点,然后再访问子树的,而中序遍历则先访问左子树再访问根节点,那么把前序的a 取出来,然后查找a 在中序遍历中的位置就得到dgb a echf 这样我们就知道dgb 是左子树echf 是右子树,因为数量要吻合所以前序中相应的dbg 是左子树cefh 是右子树。

实验报告-二叉树的中序遍历

实验报告-二叉树的中序遍历

*rchild;
Status CreateBiTree(BiTree &T) { TElemType ch; scanf("%c",&ch); if (ch=='#') T= NULL; else { if (!(T = (BiTNode *)malloc(sizeof(BiTNode)))) return OVERFLOW; T->data = ch; CreateBiTree(T->lchild); CreateBiTree(T->rchild); } return OK; } // CreateBiTree void PreOrder(BiTree T) { if(T) { printf("%c",T->data); PreOrder(T->lchild); PreOrder(T->rchild); } }
二、数据结构
二叉树是每个节点最多有两个子树的树结构。 有了根结点之后, 每个顶点定义了唯一的 父结点,和最多 2 个子结点。其存储结构分为两种,链式存储方式和顺序存储方式。 遍历是对树的一种最基本的运算, 所谓遍历二叉树, 就是按一定的规则和顺序走遍二叉 树的所有结点, 使每一个结点都被访问一次, 而且只被访问一次。 由于二叉树是非线性结构, 因此,树的遍历实质上是将二叉树的各个结点转换成为一个线性序列来表示。
遍历是对树的一种最基本的运算所谓遍历二叉树就是按一定的规则和顺序走遍二叉树的所有结点使每一个结点都被访问一次而且只被访问一次
实验报告 二叉树的中序遍历
15091030 肖克
一、问题描述
二叉树一种是重要的数据结构。所谓遍历是指沿着某条搜索路线,依次对树中每个结 点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问题。 遍历是二叉树 上最重要的运算之一,是二叉树上进行其它运算之基础。

数据结构详细教案——树与二叉树

数据结构详细教案——树与二叉树

数据结构详细教案——树与二叉树一、教学目标1.了解树和二叉树的基本概念和特点;2.掌握树和二叉树的基本操作;3.能够通过递归遍历树和二叉树。

二、教学重难点1.树和二叉树的基本概念和特点;2.递归遍历树和二叉树。

三、教学内容1.树的概念和特点1.1树的定义树是n(n>=0)个节点的有限集。

当n=0时,称为空树;如果不为空树,则1. 树有且仅有一个特殊节点被称为根(Root);2.其余节点可分为m(m>0)个互不相交的有限集T1,T2,...,Tm,其中每个集合又是一棵树。

1.2节点间的关系- 父节点(parent)是当前节点的直接上级节点;- 子节点(child)是当前节点的直接下级节点;- 兄弟节点(sibling)是具有同一父节点的节点;- 祖先节点(ancestor)是通过从当前节点到根的任意路径可以到达的节点;- 子孙节点(descendant)是通过从该节点到子树的任意节点可以到达的节点。

1.3树的特点-树是一个有层次的结构,可以看作是一个鱼骨图;-树中的每个节点都可以有多个子节点,但只有一个父节点;-树中的节点之间是唯一的,不存在重复节点;-树中的任意两个节点之间都有且仅有一条路径连接。

2.二叉树的概念和特点2.1二叉树的定义二叉树是一种特殊的树结构,它的每个节点最多只能有两个子节点,分别称为左子节点和右子节点。

2.2二叉树的特点-二叉树的度最大为2,即每个节点最多有两个子节点;-二叉树的第i层最多有2^(i-1)个节点;-对于任意一颗二叉树,如果其叶子节点数为n0,度为2的节点数为n2,则有n0=n2+1;-完全二叉树是一种特殊的二叉树,除了最后一层的叶子节点外,每一层的节点都是满的。

四、教学过程1.讲解树和二叉树的基本概念和特点,引导学生理解树和二叉树的定义和节点间的关系。

2.分析树和二叉树的基本操作,并通过实例演示操作过程,让学生掌握操作的步骤和方法。

3.运用递归算法遍历树和二叉树的过程,详细讲解前序遍历、中序遍历和后序遍历的定义和实现方法。

二叉树的遍历 说课

二叉树的遍历 说课

《二叉树的遍历》说课稿09级计科系(1)班高怡 20091081140尊敬的各位老师:大家好!我说课的内容是数据结构(C语言版)第六章《树和二叉树》中二叉树的遍历的内容。

我将要从教材、教学目标、教学重难点、教学方法、教学准备、教学过程等六个方面进行详细阐述。

我对本课进行了如下设计:一、教材分析二叉树的遍历是二叉树中重要内容,《二叉树的遍历》是数据结构(C语言版)教材第六章第三节的内容,在此之前,学生已学习了二叉树的定义和性质,这为过渡到本节的学习起着铺垫作用。

在二叉树的一些应用中,为了在树中查找具有某种特性的结点,或者对树中全部结点逐一进行某种处理,就提出了二叉树的遍历,这样能够对二叉树的结点进行更快更好的处理。

二、学情分析作为职业中学的学生,比起高中初中的学生来说更加不爱学习,但是他们又有一定的不同,因为他们学的是专业技术,并且能够及时的开展实践,所以从这一方面说,他们又占有一定的优势。

对于所学的知识他们能够更好的学以致用,这对他们掌握知识是有一定帮助的。

三、教学目标1、知识目标:理解并掌握二叉树的三种遍历方法,并且能够准确的对二叉树进行三种遍历,能够根据给出的先序和后序正确还原一颗二叉树。

2、能力目标:培养学生自主学习,举一反三的能力。

3、情感目标:提高学生的分析问题和解决问题的能力。

四、教学重难点重点:1、学习理解二叉树的先序遍历。

2、通过对二叉树先序遍历的学习自己学会二叉树的中序和后序遍历。

3、根据给出的二叉树前序和中序遍历成功还原一颗二叉树。

难点:先序遍历、中序遍历、后序遍历的定义的理解和运用。

五、教法分析主要采用讲授法,教练法,讨论法,范例教学法。

采用例子引导,边讲边练,小组讨论的方法教学。

六、学法分析学生跟着老师,逐步理解,并自己学会分析,学会运用。

在课堂上边学边练,当堂掌握所学知识。

七、教学准备黑板,粉笔。

八、教学步骤分析本节课,我设置了3个教学环节,一是:导入新课;二是:探索新知,解决问题;三是:学以致用,当堂巩固。

数据结构实验报告-线索二叉树的遍历

数据结构实验报告-线索二叉树的遍历

线索二叉树的遍历--《数据结构实验报告》1.基本思想对于n个结点的二叉树,在二叉链存储结构中有n+1个空链域,利用这些空链域存放在某种遍历次序下该结点的前驱结点和后继结点的指针,这些指针称为线索,加上线索的二叉树称为线索二叉树。

线索二叉树的建立就是在二叉树的基础上进行线索化。

本次实验建立了前序线索二叉树,中序线索二叉树,和后序线索二叉树,并分别对前中序线索二叉树进行了前序,中序,后序遍历,对后序线索二叉树进行了后序遍历。

2.用到的数据结构定义节点元素:Left, right为普通二叉树的左右孩子,value为该节点元素的值,Ltag, Rtag为左右线索化指向节点。

在某些遍历中会用到栈结构,用来存储当前可以路过,但是在以后却访问不到的点。

3.基本操作实现1.前,中,后序二叉树的线索化:线索化的实质是将二叉链表中的空指针改为指向前驱或后继的线索,前驱和后继的信息是在遍历过程中才能得到,故线索化的过程即为在遍历过程中修改空指针的过程。

前,中,序线索化的过程相似,只是修改NULL和递归遍历左右孩子的顺序导致产生不同。

2.前序线索二叉树的前序遍历:因为前序线索二叉树建立的过程就是按照前序遍历的思想线索化的,所以按照一直向左走,直到左边的指向为线索时停止,开始向右指(不管是线索还是树枝),依次递归得到答案。

3.前序线索二叉树的中序遍历:根据前序线索化的二叉树在中序遍历时如果按照前序遍历的方式会出现上面的一些点永远无法被访问到,所以,增加一个数据结构—栈。

在一直向左遍历的时候,将这些节点入栈,在回访时,依次取出这些点,在进入到取出点的右孩子,实现中序遍历。

4.前序线索二叉树的后序遍历:思想和中序遍历差不多,但是是将栈中元素的右孩子遍历完成后在输出该元素的值,实现后序遍历。

5.中序线索二叉树的前序遍历:中序的前序遍历比较简单,和前序线索的前序遍历很像,但是在判断左右孩子是否是线索时,需进行循环遍历判断,不是简单的if。

数据结构二叉树遍历实验报告简版

数据结构二叉树遍历实验报告简版

数据结构二叉树遍历实验报告数据结构二叉树遍历实验报告1. 实验目的本实验旨在通过实现二叉树的前序、中序和后序遍历算法,加深对二叉树遍历的理解,并验证算法的正确性。

2. 实验原理2.1 二叉树二叉树是一种特殊的树状数据结构,它的每个节点最多只能有两个子节点。

二叉树可以为空树,也可以是由根节点、左子树和右子树组成的非空树。

2.2 遍历算法二叉树的遍历算法包括前序遍历、中序遍历和后序遍历。

- 前序遍历:先访问根节点,然后依次递归访问左子树和右子树。

- 中序遍历:先递归访问左子树,然后访问根节点,最后递归访问右子树。

- 后序遍历:先递归访问左子树,然后递归访问右子树,最后访问根节点。

3. 实验过程3.1 数据结构设计首先,我们需要设计表示二叉树的数据结构。

在本次实验中,二叉树的每个节点包含三个成员变量:值、左子节点和右子节点。

我们可以使用面向对象编程语言提供的类来实现。

具体实现如下:```pythonclass TreeNode:def __init__(self, val=0, left=None, right=None): self.val = valself.left = leftself.right = right```3.2 前序遍历算法前序遍历算法的实现主要包括以下步骤:1. 若二叉树为空,则返回空列表。

2. 创建一个栈,用于存储遍历过程中的节点。

3. 将根节点入栈。

4. 循环执行以下步骤,直到栈为空:- 弹出栈顶节点,并将其值添加到结果列表中。

- 若当前节点存在右子节点,则将右子节点压入栈。

- 若当前节点存在左子节点,则将左子节点压入栈。

具体实现如下:```pythondef preorderTraversal(root):if not root:return []stack = []result = []stack.append(root)while stack:node = stack.pop()result.append(node.val)if node.right:stack.append(node.right)if node.left:stack.append(node.left)return result```3.3 中序遍历算法中序遍历算法的实现主要包括以下步骤:1. 若二叉树为空,则返回空列表。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构中二叉树中序遍历的教学分析袁宇丽, 胡 玲Ξ(内江师范学院计算机与信息科学系, 四川 内江 641112) 摘 要:数据结构的教学应注重方法的应用,在二叉树的中序遍历中使用投影法可以使遍历过程简单化,再由其中的一种遍历递归算法(先序)推导得到另外两种(中序,后序)的遍历递归算法,让学生加深对整个遍历过程的了解与掌握。

关键词:数据结构;二叉树;遍历;算法中图分类号:G 642 文献标识码:A 文章编号:1671-1785(2006)04-0109-031 引言《数据结构》是计算机学科的一门专业技术基础课,也是计算机程序设计的重要理论技术基础课。

目的是在于让学生学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据结构选择适当的逻辑结构,存储结构及其相应的算法;并初步掌握算法的时间分析和空间分析的技术;培养学生进行复杂程序设计的能力和数据抽象的能力。

但从学生角度而言,在学习该门课程时普遍反映较难,总觉得课程内容抽象,不易理解,好些具体算法不知从何下手。

针对以上情况,任课教师在讲授该门课程时更应注重方法的应用,从多角度,多侧面展现知识点,化抽象为具体,化特殊为一般,不应只局限于教材上的一种解题模式,应结合自己的理解,补充新方法,这样才能更好的拓宽学生的思路,达到化难为易,举一反三的效果。

下面以具体实例说明。

2 二叉树中序遍历的投影法在二叉树的一些应用中,常常要求在树中查找具有某种特征的结点,或者对树中全部结点逐一进行某种处理。

这就提出了一个遍历二叉树的问题,即如何按某条搜索路径巡访树中每个结点,使得每个结点均被访问一次,而且仅被访问一次。

“访问”的含义很广,可以是对结点作各种处理,如输出结点的信息等。

遍历对线性结构来说,是一个容易解决的问题。

而对二叉树则不然,由于二叉树是一种非线性结构,每个结点都可能有两棵子树,因而需要寻找一种规律,以便使二叉树上的结点能排列在一个线性队列上,从而便于访问。

回顾二叉树的定义可知,二叉树是由三个基本单元组成:根结点、左子树、右子树。

因此,若能依次遍历这三部分,便是遍历了整个二叉树。

若限定先左后右的顺序,则分为三种情况:先(根)序遍历,中(根)序遍历,后(根)序遍历。

二叉树的遍历及其应用是数据结构中一个很重要的知识点,要求学生能根据所给二叉树得到相应的三种遍历序列(前序,中序,后序),并能写出这三种遍历算法。

以中序遍历而言,教材[1]结合图给出了中序遍历过程示意图,并具体分析了该遍历的递归执行过程。

但递归调用及返回对学生来说本身就是一个较难掌握的知识,往往出现进入递归后不知怎样层层返回,所图1 二叉树以书上在说明二叉树的中序遍历时借用递归调用与返回的方法向学生展示整个遍历过程对初学者总感觉有一定难度。

我们在这里补充一种教材上没有提到的二叉树中序遍历的直观方法:投影法。

分析中序遍历的实质,是按先中序访问左子树,再访问根结点,最后中序访问右子树的顺序进行的。

直观上想,处于二叉树最左下方的结点应该是第一个要访问的结点,再结合二叉树本身的构造特点,是有严格的左右子树之分的,所以投影法就是根据二叉树的结构特征得来的。

对于一棵二叉树,从根结点所在的层开始,将所有非空左子树完全位于当前根结点的左方,将所有非空右子树完全位于当・901・第21卷第4期N o 14V o l 121 内江师范学院学报JOU RNAL O F N E I J I AN G T EA CH ER S COLL EGE 收稿日期:2005-11-11 作者简介:袁字丽(1979-),女,四川自贡人,内江师范学院助教,硕士。

前根结点的右方,其余各层均按该方法处理。

这样就构造好了一棵符合要求的二叉树,如下图1所示:在上述二叉树的正下方画一条水平直线,将树中各结点依次垂直投影到这条水平直线上,此时该水平直线上得到的结点序列即为该二叉树的中序遍历序列(DBEA FCG ),这与用书上介绍的方法得到的是同样的结果。

该方法就是利用了二叉树中序遍历先左,再根,后右的思想,采用这种方法,学生理解起来比较直观,避免了教材上递归执行过程中的调用返回等问题,让初学者能轻松掌握,在此基础上再过渡到递归的分析与应用,这样给学生一个缓冲的阶段,有利于更深入的学习。

3 遍历算法的分析数据结构要研究的一个重要内容就是用算法来描述解决实际问题的步骤与过程。

对于二叉树的遍历算法,教材[2]给出了其先序遍历的递归算法,该算法如下:PROC P reo rder (bt :b itrep tr );{先序遍历根结点指针为b t 的二叉树}IF b t ≠N I LTH EN [visit (b t ↑.data );{访问根结点} P reo rder (b t ↑.lch ild ); P reo rder (b t ↑.rch ild ); ]END P ;{P reo rder }那么二叉树中序遍历的递归算法又该怎样呢?结合前面的分析,三种遍历的不同在于对根结点访问的顺序上,所以如果将上述算法中访问结点的语句放于不同的位置处,便会得到另外两种遍历的递归算法,分别如下:PROC Ino rder (b t :b itrep tr );{中序遍历根结点指针为b t 的二叉树}IF b t ≠N I L TH EN [Ino rder (b t ↑.lch ild ); visit (b t ↑.data ); Ino rder (b t ↑.rch ild ); ]END P ;{Ino rder }PROC Po sto rder (b t :bo trep tr );{后序遍历根结点指针为b t 的二叉树}IF b t ≠N I LTH EN [Po sto rder (b t ↑.lch ild ); Po sto rder (b t ↑.rch ild ); visit (b t ↑.data ); ]END P ;{Po sto rder }所以,只要弄清楚问题的本质,算法设计也就容易解决了,这里再补充介绍一种中序遍历的非递归算法。

该算法中使用的数据类型定义如下:T YPEN odep tr =↑nodetype ;N odep tr =reco rd L ch ild :nodep tr ; D ata :char ; R ch ild :nodep tr End ;该算法描述如下(类pascal 语言):V ar roo t :nodep trP rocedu re ino rder (p :nodep tr ){p 指向二叉树的根结点};・011・内江师范学院学报 第21卷第4期{用一个栈实现树的中序遍历}Con st stack size =50;V ar p s :array [1..stack size ]of nodep tr ;top :in teger ;BEG I N Top :=0;{栈置空}R epeat W h ile p <>n ildo Begin Top :=top +1; If top >stack size then stackfu l {栈满的判断}; P s [top ]:=p ;①p :=p ↑.lch ild ; End ;If top <>0then Begin P :=p s [top ]; Top :=top -1; ②W rite (p ↑.data ); P :=p ↑.rch ild End ; U n til top =0END ;该算法借用堆栈实现二叉树的中序遍历,没有涉及到递归的应用,整个过程由循环语句控制,结构清晰,若是能再结合具体图示给学生讲解,理解与掌握该算法思想并不困难。

如果在刚才的中序遍历非递归算法中将②所在的语句放置①,就得到了其先序遍历的非递归算法,也就是说,从二叉树的第一层开始,在访问左右子树前,先访问当前根结点,其余各层依次类推。

以上例子说明,数据结构中的一些知识点之间彼此都有联系,如果能发觉其间的规律,着重分析相互之间的内在联系,并结合教材,补充一些较易理解的解题算法,这样由浅入深的进行介绍,必会加深学生对这些知识的理解与掌握,也会加强对知识灵活应用的能力。

这也是我们开设这门课程的目的所在。

参考文献:[1]严蔚敏,吴伟民.数据结构(第二版)[M ].北京:清华大学出版社,1992.1252128.[2]严蔚敏,吴伟民.数据结构(C 语言版)[M ].北京:清华大学出版社,1998.The Teach i ng Analysis of I norder Traversi ng B i nary Treei n the Data StructureY UAN Yu 2li ,HU L ing(D ep t .of Compu ter &Info rm ati on Science ,N eijiang teachers co llege ,N eijiang ,Sichuan 641112,Ch ina ) Abstract :T he teach ing of the D ata Structu re shou ld m ake a po in t of the app licati on of the m ethod ,u sing the cast shadow m ethod can m ake the p rocess of traverse tu rned in b rief at ino rder traversing B inary tree .A gain from among them of the in side a traverse algo rithm (p reo rder )deduces a trsverse algo rithm that get ano ther tw o k inds of ,let stu 2den t deepen the understanding of w ho le the p rocess of traverse . Key words :data structu re ;b inary tree ;traverse ;algo rithm ・111・2006年8月 袁宇丽,胡 玲:数据结构中二叉树中序遍历的教学分析。

相关文档
最新文档