基于java数据结构实验 二叉树实验报告_第1页
基于java数据结构实验 二叉树实验报告_第2页
基于java数据结构实验 二叉树实验报告_第3页
基于java数据结构实验 二叉树实验报告_第4页
基于java数据结构实验 二叉树实验报告_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验报告系部计算机系班级学号姓名课程名称数据结构实验日期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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论