二叉树的建立与遍历.doc

二叉树的建立与遍历.doc

ID:62039332

大小:653.00 KB

页数:8页

时间:2021-04-16

二叉树的建立与遍历.doc_第1页
二叉树的建立与遍历.doc_第2页
二叉树的建立与遍历.doc_第3页
二叉树的建立与遍历.doc_第4页
二叉树的建立与遍历.doc_第5页
资源描述:

《二叉树的建立与遍历.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、个人收集整理勿做商业用途实践考核题第二题设计报告书学生姓名 XXX学生学号09XXX所在地区XXX提交日期(年/月)2014/6实践题目实现二叉树的建立与遍历 需求分析 (1)以二叉链表作为存储结构,定义二叉树类型Bitree 定义二叉链表的存储结构,可以更好地对二叉表的操作,在二叉链表中,data域用于存储二叉树节点中的数据信息;lchild是指向左孩子的指针(左指针)。类似的,rchild是指向右孩子的指针(右指针)。此外,每个二叉链表还必须有一个指向根节点的指针,该指针称为根指针。与链表头指针类似,根指针具有标识二叉链表

2、的作用,对二叉链表的访问只能从根指针开始。若果某个节点的右孩子或者左孩子不存在时,则相应指针数据域为空(#)。由此可知叶节点的左右指针必为空(#)。(2)实现二叉树的以下运算<1>建立void CreateBiTree(BiTree*T) 输入二叉树的结点元素,建立二叉链表    建立void CreateBiTree(BiTree *T)函数可以往二叉链表中输入数据和向左右指针的指向是否为#,只有建立了二叉链表才能通过调用先序遍历、中序遍历和后序遍历的函数遍历出二叉树中的数据。<2>选择一种遍历方式(先序、中序、后序)遍历这

3、棵二叉树通过选择遍历方式,遍历同一颗二叉树,遍历的次序是不同的,遍历的方法也是不一样的,通过不同的遍历方式的得到二叉树的顺序是不一样,但是都是为了得到二叉树最后的排序。通过先序遍历,先访问的是根节点,然后是左子树,最后是右子树。中序遍历,先遍历左子树,在访问根节点,最后遍历右子树。后序遍历,先遍历左子树,在遍历右子树,左后访问根节点。通过不同的排序方式可以确定一棵唯一的二叉树。概要设计个人收集整理勿做商业用途(1)建立二叉链表: voidCreateBiTree(BiTree *T)  首先,定义一个结构体,存储每个节点的信息

4、,并给这个结构体定义别名为Bittree;这个结构体中的数据元素有,保存数据的类型,还有指向左右孩子的指针它的类型和结构体的类型一样。(2)实现二叉树的以下运算选择一种遍历方式(先序、中序、后序)遍历这棵二叉树 先序遍历:void PreOrder(BiTree T)若被遍历的二叉树为空,执行空操作;否则,依次执行下列操作:  访问根节点;    先序遍历左子树;     先序遍历右子树。中序遍历:void InOrder(BiTreeT若被遍历的二叉树为空,执行空操作;否则,依次执行下列操作:中序遍历左子树;访问根节点;中序

5、遍历右子树。后序遍历:void PostOrder(BiTreeT)若被遍历的二叉树为空,执行空操作;否则,依次执行下列操作:后序遍历左子树;后序遍历右子树;访问根节点。上面给出的先序遍历、中序遍历和后序遍历的定义都是递归的,因而根据定义很容易得到相应遍历的递归算法。详细设计个人收集整理勿做商业用途 #include#include#include<malloc.h>typedefcharTElemType;typedef struct SBiTNode{  TElemTypedata;s

6、tructSBiTNode*lchild,*rchild;}BiTNode,*BiTree;//采用左序遍历创建二叉树,用到的是递归算法,参数指针T有点晦涩难懂。voidCreateBiTree(BiTree*T){ TElemTypech;  scanf("%c",&ch);if(ch=='#')   *T=NULL;   else{  *T=(BiTree)malloc(sizeof(BiTNode) );    if(!*T)      exit(-1); (*T)->data=ch;   CreateBiTree(&(

7、*T)->lchild);个人收集整理勿做商业用途 CreateBiTree(&(*T)->rchild);  }}//输出函数voidVisit(BiTree T){ﻩif(T->data!='#'){ﻩprintf("%c",T->data);ﻩ}}//先序遍历voidPreOrder(BiTreeT){if(T!=NULL){ﻩ//访问根节点ﻩVisit(T);ﻩ//访问左子结点ﻩPreOrder(T->lchild);ﻩ//访问右子结点PreOrder(T->rchild);}}//中序遍历voidInOrder(Bi

8、TreeT){个人收集整理勿做商业用途  //判断是否为空if(T!=NULL)   {//中序访问左子树InOrder(T->lchild);   //访问根节点 Visit(T);  //中序访问右子树  InOrder(T->rchild); }}//后序遍历voidP

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。