哈尔滨理工大学计算机学院 数据结构课程设计 建立二叉树 层序、先序.doc

哈尔滨理工大学计算机学院 数据结构课程设计 建立二叉树 层序、先序.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
哈尔滨理工大学计算机学院 数据结构课程设计 建立二叉树 层序、先序

哈尔滨理工大学计算机学院 数据结构课程设计 建立二叉树 层序、先序遍历 班级:计05-1班 姓名:杨继伟 学号:0504110122 目录 1 需求分析 2 1.1题目分析 2 1.2二叉树构造模块 4 1.3层序遍历二叉树模块 4 1.4先序遍历二叉树模块 4 2 概要设计 4 2.1二叉树构造算法 4 2.2层序算法 7 2.3先序算法 9 3 详细设计 11 4 调试分析 15 5 课设总结 16 建立二叉树,层序、先序遍历 1需求分析: 1.1.题目: 建立二叉树,要求能够输入树的各个节点,并能够输出用不同方法遍历的遍历序列;分别建立二叉树存储的输入函数,输出层序遍历序列的函数,输出 先序遍历序列的函数。 分析: 首先要输入元素建立二叉树,选择某一种存储结构存储二叉树,本程序采用二叉链表存储结构。由于二叉树的定义是递归的,因而一棵非空二叉树可以看作是由根结点、左子树和右子树这三个基本部分组成的。如果能依次遍历这三个部分的信息,也就遍历了整个二叉树。由此得到的二叉树的遍历是按某种策略访问二叉树中的每一个结点且仅访问一次的过程。 程序一共分为如下3个模块: 二叉树的构造: Insert_node(btree *root, int node) { …… } create_btree(int data[], int len) { …… } 层序遍历二叉树: Void levelorder(bitree *root) { …… } 先序遍历二叉树: Void preorder(bitree *root) { …… } 1.2.二叉树的构造 采用二叉链表存储结构建立二叉树, 二叉树的结点由一个数据元素和分别指向其左右子树的两个分支构成,即数据域和左、右指针域 lchild data rchild 数据结构: Typedef strcut bnode { Telemtype data; //结点数据类型 Struct bnode *lchild,*rchild; // 定义左右孩子为指针类型 }bnode,*btree; 其中Insert_node(btree *root, int node) 为插入二叉树结点函数,create_btree(int data[], int len)为建立二叉树函数 1.3.层序遍历二叉树 要采用一个队列。先将二叉树的根节点入队,然后退队,输出该节点,若它有左子树,便将左子树的根节点入队,若它有左子树,便将有子树的根节点入队,直到队列空为止。采用递归方法遍历。 1.4.先序遍历二叉树 若树不空,先访问根节点,其次访问左子树,最后访问右子树。 采用非递归方法遍历。 2.概要设计 1)二叉树的构造算法 先依序输入元素值,并存入数组nodelist中,再用函数一一插入二叉树的节点建立二叉树,节点的建立是将左子针指向左子树,右子针指向右子树 。 算法流程图如下: Insert_node(btree *root, int node): create_btree(int data[], int len): 2)层序遍历二叉树: 算法流程图如下: 3)先序遍历二叉树: 算法流程图如下: 5)主函数 流程图: 3.详细设计 #includestdlib.h #includestdio.h Typedef struct btnode { Int data; Struct btnode *lchild,*rchild; }bitree; Bitree *insert_node(bitree *root,char node) //插入二叉树的节点 { bitree *newpointer; //根指针 bitree *currentpointer; //目前节点指针 bitree *parentpointer; //父节点指针 Newpointer=(bitree *)malloc(sizeof(bitree)); Newpointer-data=node; Newpointer-lchild=null; Newpoiter-rchild=null; If(root==null) //当结点为空时 { return newpointer; }

文档评论(0)

pangzilva + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档