好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

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

8页
  • 卖家[上传人]:公****
  • 文档编号:425885091
  • 上传时间:2024-02-21
  • 文档格式:DOC
  • 文档大小:105.50KB
  • / 8 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 实习报告二“二叉树的二叉链表表示”演示程序 ====(一) 、程序的功能和特点1. 程序功能:利用链表对非线性二叉树进行存储表示和访问能够创建二叉树,并且能够按前序遍历显示输出所创建的二叉树2. 程序特点:采用java面向对象语言,对二叉树用二叉链表用类进行封装能够创建二叉树,并且能够按前序遍历显示输出所创建的二叉树二) 、程序的算法设计算法一:“按前序遍历方式建立二叉树”算法:1. 【逻辑结构与存储结构设计】 逻辑结构:非线性结构 存储结构:链式存储结构头指针bt 头结点指针btAAC∧BC∧B∧F∧∧E∧D∧∧F∧∧E∧D∧∧G∧∧G∧ (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 头结点指针btAAC∧BC∧B∧F∧∧E∧D∧∧F∧∧E∧D∧∧G∧∧G∧ (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 头结点指针btAAC∧BC∧B∧F∧∧E∧D∧∧F∧∧E∧D∧∧G∧∧G∧ (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) ); 。

      点击阅读更多内容
      相关文档
      安徽省安全员《A证(企业负责人)》冲刺试卷三.docx 2026年房地产经纪人《房地产经纪业务操作》预测试卷三.docx 安徽省安全员《A证(企业负责人)》模拟试卷一.docx 2026年房地产经纪人《房地产交易制度政策》模拟试卷四.docx 安徽省安全员《B证(项目负责人)》冲刺试卷二.docx 2026年房地产经纪人《房地产经纪专业基础》预测试卷四.docx 2026年房地产经纪人《房地产经纪业务操作》考前点题卷一.docx 2023年通信工程师《通信专业实务(传输与接入-无线)》试题真题及答案.docx 安徽省安全员《A证(企业负责人)》试题精选.docx 2026年房地产经纪人《房地产经纪专业基础》预测试卷二.docx 2026年房地产经纪人《房地产经纪业务操作》考前点题卷二.docx 2026年房地产经纪人《房地产经纪职业导论》冲刺试卷三.docx 2026年房地产经纪人《房地产交易制度政策》冲刺试卷三.docx 2026年房地产经纪人《房地产经纪专业基础》考前点题卷二.docx 2026年房地产经纪人《房地产经纪职业导论》冲刺试卷五.docx 2026年房地产经纪人《房地产经纪职业导论》冲刺试卷四.docx 2026年房地产经纪人《房地产交易制度政策》冲刺试卷一.docx 2026年房地产经纪人《房地产交易制度政策》冲刺试卷四.docx 安徽省安全员《B证(项目负责人)》冲刺试卷三.docx 2026年房地产经纪人《房地产经纪业务操作》模拟试卷二.docx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.