二叉树的二叉链表表示

上传人:jin****ng 文档编号:208059219 上传时间:2023-05-09 格式:DOCX 页数:8 大小:188.15KB
收藏 版权申诉 举报 下载
二叉树的二叉链表表示_第1页
第1页 / 共8页
二叉树的二叉链表表示_第2页
第2页 / 共8页
二叉树的二叉链表表示_第3页
第3页 / 共8页
资源描述:

《二叉树的二叉链表表示》由会员分享,可在线阅读,更多相关《二叉树的二叉链表表示(8页珍藏版)》请在装配图网上搜索。

1、=实习报告二“二叉树的二叉链表表示”演示程序(一)、程序的功能和特点1. 程序功能:利用链表对非线性二叉树进行存储表示和访问。能够创建二叉树, 并且能够按前序遍历显示输出所创建的二叉树。2. 程序特点:采用java面向对象语言,对二叉树用二叉链表用类进行封装。能够创建二叉树,并且能够按前序遍历显示输出所创建的二叉树。(二)、程序的算法设计算法一:“按前序遍历方式建立二叉树”算法:1. 【逻辑结构与存储结构设计】逻辑结构:非线性结构。 存储结构:链式存储结构。链式二叉树的二叉链表表示示意图2. 【基本操作设计】3. 【算法设计】创建二叉链表文字说明:(1).首先按前序输入二叉树。(2).判断是否

2、是封闭结点的标识,如果不是则创建二叉链表,递归生成其 左右子树。(3).如果是封闭结点标识则结束;(4).插入成功返回二叉链表的头指针。4. 【高级语言代码】 /按前序遍历方式建立二叉树public BinTreeNode preOrderCreate ( BinTreeNode p ) double item=0.0;System. out .println(按照前序遍历次序每次输入一个结点值。);try /*键盘接受一个double数*/BufferedReader br=new BufferedReader( new InputStreamReader(System.in) );item

3、=Double.parseDouble(br.readLine(); catch(IOException e) if ( item !=RefValue ) /读入的不是参照值 p=new BinTreeNode(item);p.leftChild=preOrderCreate(p.leftChild); /递归生成左子树 p. rightChild二preOrderCreate(p.rightChild); /递归生成右子树 /实参是空二叉树,得到返回的子二叉树else /读入的是参照数 p=null; /封闭叶子结点return p; /返回二叉树p 算法二:“按前序遍历方式输出二叉树”算

4、法1. 【逻辑结构与存储结构设计】逻辑结构:非线性结构。 存储结构:链式存储结构。2.【基本操作设结构如图所3. 【算法设计】文字说明:(1) .首先取链表元素判断链表是否为空。(2) .链表非空先输出该结点的值,在递归调用该方法输出其左右子树(3) .链表为空则结束,结束退出。4. 【高级语言代码】 /按前序遍历方式输出二叉树public void preOrderTraverse (BinTreeNode p) if ( p != null ) /输出根结点数据域 System.out .print( +p.GetData();/递归输出P的左子树 preOrderTraverse ( p

5、.leftChild );/递归输出P的右子树 preOrderTraverse (p.rightChild );(三) 、程序中类的设计“BinTreeNode 类:1. 【逻辑结构与存储结构】 逻辑结构:非线性结构。 存储结构:链式存储结构。二叉链表也可以带头结点的方式存放,如图(b)所示。链式二叉树的二叉链表表示示意图2. 【主要成员变量说明】主要成员变量有:data:为结点的数据域,为double类型变量。用于存放节点的数据。leftChild, rightChild:为节点的指针域,为BinTreeNode类型变量, 存放结点的指向下一个节点的指针。结构如图所示:leftChildd

6、atarightChild3. 【主要成员方法说明】public BinTreeNode ( double item): 为 BinTreeNode 的构造函数:一个 叶子结点。参数为该结点的数据。public BinTreeNode ( double item, BinTreeNode left,BinTreeNode right): 构造函数:非一个叶子结点。含有三个参数,分别为该结点的数据,左子树和右 子树。public double Get Da ta():返回数据域的值。4. 【高级语言代码】/ /定义“二叉链表结点”类class BinTreeNode privatedouble

7、data; /结点数据域BinTreeNode leftChild; /结点左右指针域BinTreeNode rightChild;/构造函数:一个叶子结点public BinTreeNode (double item) data=item; /左右指针域自动为null/构造函数:一个非叶子结点public BinTreeNode (double item,BinTreeNode left,BinTreeNode right) data=item;leftChild=left; rightChild=right;/返回结点数据域的值publicdouble GetData() returnda

8、ta; /定义“二叉链表结点”类完毕“cBinaryTree ”类:1.【逻辑结构与存储结构】 逻辑结构:非线性结构。 存储结构:链式存储结构。二叉链表可以有不带头结点(a)和带都结点(b)。(a) 带头指针的二叉链表(b) 带头结点的二叉链表2. 【主要成员变量说明】主要成员变量为:root:表示根节点,为BinTreeNode类型。RefValue:参照值为double类型。3. 【主要成员方法说明】public cBinaryTree ( double v):构造函数:建立一棵空树,并设定参照 值。public void CreateBinTree():以 root 为根建立二叉树。 p

9、ublic BinTreeNode preOrderCreate ( BinTreeNode p,String s): 按前序遍历方式建立二叉树。public BinTreeNode Ge tRoo t():得到二叉树的根。public void preOrderTraverse (BinTreeNode p):前序遍历方式输出二叉 树。public static void main(String args):主函数。4. 【高级语言代码】/*定义“二叉链表”类* public class cBinaryTree private BinTreeNode root; /根节点 private d

10、ouble RefValue; /参照值:在建立二叉树之前,/给定一个结点数据域中不可能出现的数, /用来标记二叉树的一条分支到此封闭。/构造函数:建立一棵空树,并设定参照值 public cBinaryTree (double v) RefValue=v; root=null;/以roo t为根建立二叉树public void CreateBinTree()root=preOrderCreate(root); /实参是空二叉树/根roo t得到返回的二叉树根节点 /按前序遍历方式建立二叉树 public BinTreeNode preOrderCreate ( BinTreeNode p )

11、 double item=0.0;System. out.println(按照前序遍历次序每次输入一个结点值。); try /*键盘接受一个double数*/BufferedReader br=new BufferedReader(new InputStreamReader(System.in);item=Double.parseDouble(br.readLine(); catch(IOException e)if ( item != RefValue ) /读入的不是参照值p=new BinTreeNode(item); p.leftChild=preOrderCreate(p.leftC

12、hild);/ /递归生成左子树p.rightChild=preOrderCreate(p.rightChild); /递归生成右子 树/实参是空二叉树,得到返回的子二叉树else /读入的是参照数p=null; /封闭叶子结点return p; /返回二叉树p/输出以roo t为根的二叉树public void OutputBinTree()preOrderTraverse(root);/按前序遍历方式输出二叉树public void preOrderTraverse (BinTreeNode p) if ( p != null ) /输出根结点数据域System.out.print( +p

13、.GetData();/递归输出p的左子树 preOrderTraverse ( p.leftChild );/递归输出p的右子树preOrderTraverse (p.rightChild );/主函数public static void main(String args) /定义一棵二叉树,参照值为-1cBinaryTree s=new cBinaryTree(T.O);s.Crea teBinTree();s.O utput BinTreeO;/定义“二叉链表”类完毕(四) 程序的输入输出和运行结果截屏程序运行结果截屏:曰 Consol* 妄 I.C cBirairyTre Java A

14、pplication C:Program Filcsavajre7binjavaw.tKe l2019-4-19 卜午7;27;02按灵前序遍历次序每扶输入一个结启舉扌曰闘“序遍历氏存毎汝输入一7琵尸徨。2捋駁ti序诵円次韦m戈输入Y结孑直。3按照前序遍 历枕序每衣输入一个结点值.拎吳甸序m HfA韦至犧输入一个结口佰。3按瑕TT序遍丿力成子茅次输人一个茫戸按耐 序遍历咬序每衣输入一个结点值a9披灵前疗遍历次序每初输八-个结启So拽預利序遍历肚存零汝締人一i琵F徨.按按前序遍历谀序每衣输入一个结点值。詰照前序遍 历挨序每衣输入一个结点值匚拎用甸序诵E松年输川该二沪卅:1. D 2.0 3.0 8. 0 9.0

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!