




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验报告系部计算机系班级学号姓名课程名称数据结构实验日期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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 预防校园欺凌班会课件
- 顾客体验课件
- 心电图健康评估与应用
- 医院学会管理办法解读
- 音乐课件的作文
- 市政污水管网改造项目环境影响报告书(模板)
- 城镇污水管网建设项目投资估算方案(参考模板)
- xx河流排水防涝设施建设项目节能评估报告(参考)
- 2025年商务、清洗服务项目建议书
- 2025年差压变送器合作协议书
- 2025年7月新疆维吾尔自治区学业水平合格性考试历史试题(含答案)
- 建立并优化医院的药品管理体系
- 农村农资采购与供应长期合作协议
- 反假币培训课件
- 2025至2030中国电压暂降治理行业产业运行态势及投资规划深度研究报告
- 辽宁省2024年7月普通高中学业水平合格性考试化学试卷(含答案)
- 煤炭造价知识培训
- 2025届辽宁省大连市高新区英语七年级第二学期期末学业质量监测模拟试题含答案
- 肿瘤全程康复管理制度
- 对患者的健康教育制度
- 2025年酒店管理专业基础知识考试试题及答案
评论
0/150
提交评论