数据结构课程设计
题
目线索二叉树的生成及其遍历
学
院:
理学院
班
级:
数学132班
学生姓名:孙晴、张炳赫、张美娜、董自鹏
学生学号:
8、12、13、22
指导教师:
张太发
2014年12月24日
f课程设计任务书
姓名设计题目
理论要点
设计目标预期结果小组人员具体分工
Xyzs
班级
线索二叉树的生成及其遍历二叉树的遍历本质上是将一个复杂的非线性结构转换为线性结构,使每个结点都有且仅有一个直接前驱结点和直接后继结点(第一个结点无前驱,最后一个结点无后继)。但是二叉树中每个结点在这个序列中的直接前驱结点和直接后继结点是什么?二叉树的存储结构中并没有反映出来,只能在对二叉树遍历的动态过程中得到这些信息。为了保留结点在某种遍历序列中直接前驱喝直接后继的位置信息,有两种方法。一是在结点结构中增加向前和向后的指针fwd和bkd,这种方法增加了存储开销,不可取;二是利用二叉树的二叉链表的那些空指针域来指示。建立线索二叉树,或者说对二叉树线索化,实质上就是遍历一棵二叉树。在遍历过程中,访问结点的操作是检查当前的左右指针域是否为空,将它们改为指向前驱结点或后续结点的线索。为实现这一过程,设指针pre始终指向刚刚访问的结点,即若指针p指向当前结点,则pre指向它的前驱,以便设线索。另外,在对一颗二叉树加线索时,必须首先申请一个头结点,建立头结点与二叉树的根结点的指向关系,对二叉树线索化后,还需建立最后一个结点与头结点之间的线索。中序线索二叉树:若结点的ltag1,lchild指向其前驱;否则,该结点的前驱是以该结点为根的左子树上按中序遍历的最后一个结点。若rtag1,rchild指向其后继;否则,该结点的后驱是以该结点为根的右子树上按中序遍历的第一个结点。以二叉链表作为存储结构时,只能找到结点的左、右孩子的信息,而得不到结点的前驱与后继信息,为了使这种信息只有在遍历的动态过程中才能得到。增设两个指针分别指示其前驱结点和后继结点,并且利用结点的空链域存放(线索链表)。同时为了记下遍历过程中访问结点的先后关系,附设一个指针pre始终指向刚刚访问过的结点,若指针p指向当前访问的结点,则pre指向它的前驱。由此得到中序遍历建立中序线索化链表的算法对已生成的二叉树进行中序线索化并利用中序线索实现对二叉树的遍历。s:报告填写z:程序设计、运行y:答辩x:ppt设计制作
f在两周r