版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验报告系部计算机系班级学号姓名课程名称数据结构实验日期2019-11-14实验名称二叉树的操作成绩实验目的:1理解二叉树的类型定义与性质;2、掌握二叉树的二叉链表存储结构的表示和实现方法;3掌握二叉树遍历操作的算法实现。实验条件:eclipse实验内容与步骤:内容:建立二叉树的二叉链表存储结构;实现二叉树的先根,中根和后根三种遍历操作。实现二叉搜索树及相关操作。步骤:建立节点类publicclassBinaryTreeNode<T>{ privateTdata; privateBinaryTreeNode<T>lchild,rchild; publicBinaryTreeNode(Tdata,BinaryTreeNode<T>lchild,BinaryTreeNode<T>rchild){ super(); this.data=data; this.lchild=lchild; this.rchild=rchild; } publicBinaryTreeNode(Tdata){ this.data=data; this.lchild=null; this.rchild=null; } publicBinaryTreeNode(){ this(null); }先序,中序,后序遍历privatevoidpreorder(BinaryTreeNodep){ if(p!=null){ System.out.print(p.getData()+"\t"); preorder(p.getLchild()); preorder(p.getRchild()); } }privatevoidinorder(BinaryTreeNodep){ if(p!=null){ inorder(p.getLchild()); System.out.print(p.getData()+"\t"); inorder(p.getRchild()); } } publicvoidinorder(){ System.out.println("中序遍历:"); inorder(root); }privatevoidpostorder(BinaryTreeNodep){ if(p!=null){ postorder(p.getLchild()); postorder(p.getRchild()); System.out.print(p.getData()+"\t"); } } publicvoidpostorder(){ System.out.println("后序遍历:"); postorder(root); }二叉搜索树publicvoidinsearch(intx){ if(root==null){ root=newNode(x); return; } Nodep=root; while(p!=null){ if(x>p.getData()){ if(p.getRight()==null){ p.setRight(newNode(x)); return; } p=p.getRight(); } else{ if(p.getLeft()==null){ p.setLeft(newNode(x)); return; } p=p.getLeft(); } } }运行结果:二叉搜索树:实验总结:通过这次实验,我掌握了二叉树的结构原理以及它的先序,中序,后序遍历,运用递归的方法实现和不用递归的方法实现。二叉搜索树的原理和算法实现,根据二叉搜索树的特点,运用二分法进行二叉搜索树的一系列操作。附:源程序:二叉树:packagetree;importjava.util.Deque;importjava.util.LinkedList;publicclassBinaryTree<T>{ privateBinaryTreeNoderoot; publicBinaryTree(BinaryTreeNoderoot){ super(); this.root=root; } publicBinaryTree(){ this.root=null; } publicBinaryTreeNodegetRoot(){ returnroot; } publicvoidsetRoot(BinaryTreeNoderoot){ this.root=root; } @Override publicStringtoString(){ return"BinaryTree[root="+root+"]"; } privatevoidpreorder(BinaryTreeNodep){ if(p!=null){ System.out.print(p.getData()+"\t"); preorder(p.getLchild()); preorder(p.getRchild()); } } publicvoidpreorder(){ System.out.println("先序遍历:"); preorder(root); } privatevoidinorder(BinaryTreeNodep){ if(p!=null){ inorder(p.getLchild()); System.out.print(p.getData()+"\t"); inorder(p.getRchild()); } } publicvoidinorder(){ System.out.println("中序遍历:"); inorder(root); } privatevoidpostorder(BinaryTreeNodep){ if(p!=null){ postorder(p.getLchild()); postorder(p.getRchild()); System.out.print(p.getData()+"\t"); } } publicvoidpostorder(){ System.out.println("后序遍历:"); postorder(root); } privateintsize(BinaryTreeNodep){ if(p==null){ return0; } intlchildsize=size(p.getLchild()); intrchildsize=size(p.getRchild()); returnlchildsize+rchildsize+1; } publicintsize(){ System.out.println("节点数为:"); returnsize(root); } privateintheight(BinaryTreeNodep){ if(p==null){ return0; } inthl=height(p.getLchild()); inthr=height(p.getRchild()); return(hl>hr)?hl+1:hr+1; } publicintheight(){ System.out.println("高度为:"); returnheight(root); } publicvoidshowleaves(BinaryTreeNodep){ if(p!=null){ if(p.getLchild()==null&&p.getRchild()==null){ System.out.print(p.getData()+"\t"); } showleaves(p.getLchild()); showleaves(p.getRchild()); } } publicvoidpretravel(){ BinaryTreeNodep=root; Deque<BinaryTreeNode>mystack=newLinkedList<BinaryTreeNode>(); if(p!=null){ mystack.push(p); while(!mystack.isEmpty()){ p=mystack.pop(); System.out.print(p.getData()+""); if(p.getRchild()!=null){ mystack.push(p.getRchild()); } if(p.getLchild()!=null){ mystack.push(p.getLchild()); } } } }}二叉搜索树packagetree;publicclassBinartSearchtree{ privateNoderoot; publicBinartSearchtree(Noderoot){ super(); this.root=root; } publicBinartSearchtree(){ root=null; } publicvoidinsearch(intx){ if(root==null){ root=newNode(x); return; } Nodep=root; while(p!=null){ if(x>p.getData()){ if(p.getRight()==null){ p.setRight(newNode(x)); return; } p=p.getRight(); } else{ if(p.getLeft()==null){ p.setLeft(newNode(x)); return; } p=p.getLeft(); } } } publicNodefind(intx){ Nodep=root; while(p!=null){ if(x>p.getData()){ p=p.getRight(); } elseif(x<p.getData()){ p=p.getLeft(); } else{ returnp; } } returnnull; } publicvoidpreorder(){ System.out.println("先序遍历:"); preorder(root); } privatevoidpreorder(Nodep){ if(p!=null){ System.out.print(p.getData()+""); preorder(p.getLeft()); preorder(p.getRight()); } } publicNodeminNode(Nodep){ // Nodep=root; while(p.getLeft()!=null){ p=p.getLeft(); } returnp; } publicNodemaxNode(Nodep){ // Nodep=root; while(p.getRight()!=null){ p=p.getRight(); } returnp; } publicNodedelete(intx,Nodep){ Nodetemp; if(p==null){ System.out.println("error"); returnnull; } elseif(x<p.getData()){ p.setLeft(delete(x,p.getLeft())); } elseif(x>p.getData()){ p.setRight(delete(x,p.getRight())); } else{if(p.getLeft
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2018高考化学三月(二轮)课外自练(七)及答案
- 浙江省杭州市学军中学紫金港高中2023-2024学年高一下学期期中考前测英语试题2
- 安徽省宣城市高三第二次调研测试理数试题
- 2024年B2B社媒营销研究报告
- 婚庆策划中介居间合同样本
- 4S店装修项目合同模板
- 2023-2024学年全国小学四年级上信息与技术仁爱版期末试卷(含答案解析)
- 2024年展馆工程施工合同范本
- 2024年宁夏客运丛业资格证考试
- 即食型金针菇产品项目可行性研究报告
- 6.2 交友的智慧(课 件)-2024-2025学年统编版道德与法治七年级上册
- 清华大学中学生标准学术能力诊断性测试2025届英语高三上期末监测试题含解析
- 2024年中远海运物流限公司直属单位招聘高频难、易错点500题模拟试题附带答案详解
- 2023年河北张家口银行股份有限公司招聘微贷业务信贷经理考试真题
- 团队协作课件教学课件
- 2024-2025学年二年级上册语文第四单元测试卷(统编版)
- 11《宇宙生命之谜》第二课时 教学设计-2024-2025学年语文六年级上册统编版
- 2024年全国职业院校技能大赛高职组(环境检测与监测赛项)考试题库(含答案)
- 提炼与抽象-顺畅沟通世界 课件-2023-2024学年高中美术人教版(2019)选择性必修4 设计
- 国开2024年秋季《形势与政策》专题测验1-5答案
- 2024年高考英语时事热点:航天主题(附答案解析)
评论
0/150
提交评论