欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    二叉树的二叉链表表示.doc

    • 资源ID:2396478       资源大小:105.50KB        全文页数:8页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    二叉树的二叉链表表示.doc

    =实习报告二“二叉树的二叉链表表示”演示程序 =(一) 、程序的功能和特点1. 程序功能:利用链表对非线性二叉树进行存储表示和访问。能够创建二叉树,并且能够按前序遍历显示输出所创建的二叉树。2. 程序特点:采用java面向对象语言,对二叉树用二叉链表用类进行封装。能够创建二叉树,并且能够按前序遍历显示输出所创建的二叉树。(二) 、程序的算法设计算法一:“按前序遍历方式建立二叉树”算法:1. 【逻辑结构与存储结构设计】 逻辑结构:非线性结构。 存储结构:链式存储结构。头指针bt 头结点指针btAACBCBFEDFEDGG (a) 带头指针的二叉链表 (b) 带头结点的二叉链表 链式 二叉树的二叉链表表示示意图开始创建2. 【基本操作设计】键盘输入二叉树的二叉链的数据if ( item != RefValue ) Y N封闭叶子结点创建二叉链表结点 递归生成左右子树创建成功返回二叉树的头指针创建结束3. 【算法设计】 创建二叉链表文字说明: (1).首先按前序输入二叉树。 (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=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 算法二:“按前序遍历方式输出二叉树”算法:1. 【逻辑结构与存储结构设计】 逻辑结构:非线性结构。 存储结构:链式存储结构。leftChilddatarightChild结构如图所示:开始输出2. 【基本操作设计】判断链表是否为空? Y N输出该节点的数据输出该节点的数据递归输出其左,右子树输出结束3.【算法设计】 文字说明: (1).首先取链表元素判断链表是否为空。 (2).链表非空先输出该结点的值,在递归调用该方法输出其左右子树。 (3).链表为空则结束,结束退出。4.【高级语言代码】/按前序遍历方式输出二叉树public void preOrderTraverse (BinTreeNode p) if ( p != null ) /输出根结点数据域 System.out.print(" "+p.GetData();/递归输出p的左子树 preOrderTraverse ( p.leftChild );/递归输出p的右子树 preOrderTraverse (p.rightChild );(三)、程序中类的设计 “BinTreeNode”类:1. 【逻辑结构与存储结构】 逻辑结构:非线性结构。 存储结构:链式存储结构。二叉链表也可以带头结点的方式存放,如图(b)所示。头指针bt 头结点指针btAACBCBFEDFEDGG (a) 带头指针的二叉链表 (b) 带头结点的二叉链表 链式 二叉树的二叉链表表示示意图2. 【主要成员变量说明】 主要成员变量有:data:为结点的数据域,为double类型变量。用于存放节点的数据。leftChild,rightChild:为节点的指针域,为BinTreeNode类型变量,存放结点的指向下一个节点的指针。结构如图所示:leftChilddatarightChild3. 【主要成员方法说明】 public BinTreeNode ( double item): 为BinTreeNode的构造函数:一个叶子结点 。参数为该结点的数据。 public BinTreeNode ( double item, BinTreeNode left,BinTreeNode right):构造函数:非一个叶子结点。含有三个参数,分别为该结点的数据,左子树和右子树。public double GetData():返回数据域的值。4.【高级语言代码】 / /定义“二叉链表结点”类class BinTreeNode private double 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;/返回结点数据域的值public double GetData() return data; /定义“二叉链表结点”类完毕 “cBinaryTree”类:1. 【逻辑结构与存储结构】 逻辑结构:非线性结构。 存储结构:链式存储结构。二叉链表可以有不带头结点(a)和带都结点(b)。头指针bt 头结点指针btAACBCBFEDFEDGG (a) 带头指针的二叉链表 (b) 带头结点的二叉链表 2. 【主要成员变量说明】 主要成员变量为:root:表示根节点,为BinTreeNode类型。RefValue:参照值为double类型。3. 【主要成员方法说明】 public cBinaryTree ( double v):构造函数:建立一棵空树,并设定参照值。 public void CreateBinTree() :以root为根建立二叉树。 public BinTreeNode preOrderCreate ( BinTreeNode p,String s) :按前序遍历方式建立二叉树。public BinTreeNode GetRoot():得到二叉树的根。public void preOrderTraverse (BinTreeNode p):前序遍历方式输出二叉树。public static void main(String args) :主函数。 4.【高级语言代码】 /*定义“二叉链表”类*public class cBinaryTree private BinTreeNode root; /根节点private double RefValue; /参照值:在建立二叉树之前,/给定一个结点数据域中不可能出现的数,/用来标记二叉树的一条分支到此封闭。/构造函数:建立一棵空树,并设定参照值public cBinaryTree ( double v) RefValue=v;root=null;/以root为根建立二叉树public void CreateBinTree()root=preOrderCreate(root); /实参是空二叉树/根root得到返回的二叉树根节点/按前序遍历方式建立二叉树public BinTreeNode preOrderCreate ( BinTreeNode p ) 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.leftChild); /递归生成左子树p.rightChild=preOrderCreate(p.rightChild); /递归生成右子树/实参是空二叉树,得到返回的子二叉树else /读入的是参照数p=null; /封闭叶子结点return p; /返回二叉树p/输出以root为根的二叉树public void OutputBinTree()preOrderTraverse(root);/按前序遍历方式输出二叉树public void preOrderTraverse (BinTreeNode p) if ( p != null ) /输出根结点数据域 System.out.print(" "+p.GetData();/递归输出p的左子树 preOrderTraverse ( p.leftChild );/递归输出p的右子树 preOrderTraverse (p.rightChild );/主函数public static void main(String args) /定义一棵二叉树,参照值为-1cBinaryTree s=new cBinaryTree(-1.0);s.CreateBinTree();s.OutputBinTree(); /定义“二叉链表”类完毕(四)、程序的输入输出和运行结果截屏程序运行结果截屏:

    注意事项

    本文(二叉树的二叉链表表示.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开