1 / 12
文档名称:

二叉树的建立与遍历.doc

格式:doc   大小:72KB   页数:12
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

二叉树的建立与遍历.doc

上传人:iris028 2019/11/17 文件大小:72 KB

下载得到文件列表

二叉树的建立与遍历.doc

相关文档

文档介绍

文档介绍:重庆大学本科学生课程设计任务书课程设计题目二叉树的建立与遍历学院软件学院专业软件工程年级09级问题描述:建立一棵二叉树,并对其进行遍历(先序、中序、后序),打印输出遍历结果。基本要求:从键盘接受输入(先序),以二叉链表作为存储结构,建立二叉树(以先序来建立),并采用递归算法对其进行遍历(先序、中序、后序),将遍历结果打印输出。算法思想:从二叉树的递归定义可知,一棵非空的二叉树由根结点及左、右子树这三个基本部分组成。因此,在任一给定结点上,可以按某种次序执行三个操作:(1)访问结点本身(N)(2)遍历该结点的左子树(L)(3)遍历该结点的右子树(R)以上三种操作有六种执行次序:NLR、LNR、LRN、NRL、RNL、RLN。前三种次序与后三种次序对称,故只讨论先左后右的前三种次序。中序遍历的递归算法定义:若二叉树非空,则依次执行如下操作:遍历左子树、访问根结点、遍历右子树。前序遍历的递归算法定义:若二叉树非空,则依次执行如下操作:访问根结点、遍历左子树、遍历右子树。后序遍历得递归算法定义:若二叉树非空,则依次执行如下操作:遍历左子树、遍历右子树、访问根结点。模块划分:*CreatBitree()(stack**top,tree*tree)//树结点入栈voidpop(stack**top,tree**T)//出栈,栈内元素赋值voidgetTop(stack*s,tree**t)//(tree*b1)//前序遍历函数voidMidOrder(tree*b2)//中序遍历函数voidLastOrder(tree*b3)//后序遍历函数数据结构:给出所使用的基本抽象数据类型,所定义的具体问题的数据类型,以及新定义的抽象数据类型。源程序:;template<classEntry>structBinary_node{//datamembers:Entrydata;Binary_node<Entry>*left;Binary_node<Entry>*right;//constructors:Binary_node();Binary_node(constEntry&x);};template<classEntry>classBinary_tree{public:Binary_tree();boolempty()const;voidpreorder(void(*visit)(Entry&));voidinorder(void(*visit)(Entry&));voidpostorder(void(*visit)(Entry&));intsize()const;voidclear();intheight()const;voidinsert(constEntry&);Binary_tree(constBinary_tree<Entry>&original);Binary_tree&operator=(constBinary_tree<Entry>&original);~Binary_tree();protected://<Entry>*root;intrecursive_height(Binary_node<Entry>*sub_root)const;voidrecursive_insert(Binary_node<Entry>*&sub_root,constEntry&x);voidrecursive_postorder(Binary_node<Entry>*sub_root,void(*visit)(Entry&));voidrecursive_preorder(Binary_node<Entry>*sub_root,void(*visit)(Entry&));voidrecursive_inorder(Binary_node<Entry>*sub_root,void(*visit)(Entry&));voidrecursive_clear(Binary_node<Entry>*&sub_root);Binary_node<Entry>*recursive_copy(Binary_node<Entry>*sub_root);};#include""#include<iostream>usingnamespacestd;template<classEntry>intBinary_tree<Entry>::height()const/*Post:Theheightofthebi