资源描述:
《信管实验报告(树与二叉树的基本操作).doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.管理学院信管专业12(1)班学号3112004734姓名协作者:无教师评定_________________实验题目树与二叉树的基本操作实验评分表指导教师评分标准序号评分项目评分标准满分打分1完成度按要求独立完成实验准备、程序调试、实验报告撰写。202实验内容(1)完成功能需求分析、存储结构设计;(2)程序功能完善、可正常运行;(3)测试数据正确,分析正确,结论正确。303实验报告内容齐全,符合要求,文理通顺,排版美观。404总结对实验过程遇到的问题能初步独立分析,解决后能总结问题原因及解决方法,有
2、心得体会。10下述代码尽管输入eclipse或者JC验证,绝无弄虚作假..实验报告一、实验目的与要求1.本实验通过对线性表各种操作的算法设计,理解和掌握线性表的概念、存储结构及操作要求,体会顺序和链式两种存储结构的特点;2.根据操作的不同要求,选择合适的存储结构,设计并实现算法,对算法进行时间复杂度分析,从而达到掌握数据结构的研究方法、算法设计和分析方法的目的。二、实验内容1.在一棵二叉链表表示的二叉树中,实现以下操作,并说明采用哪种遍历算法,其他遍历算法是否可行。(1)输出叶子结点//求二叉树叶子结
3、点个数的递归算法(2)publicclassleaf{//输出叶子结点(3)publicstaticvoidleaf(BinaryTreebitree){(4)leaf(bitree.root);(5)}(6)publicstaticvoidleaf(BinaryNodep){(7)if(p!=null){(8)if(p.left==null&&p.right==null){(9)System.out.println(p.data+"");(10)}(11)leaf(p.lef
4、t);(12)leaf(p.right);(13)(14)}(15)}(16)publicstaticvoidmain(Stringargs[]){(17)Stringprelist[]={"A","B","D",null,"G",null,null,null,"C","E",null,null,"F","G"};//..先根遍历序列(1)BinaryTreebitree=newBinaryTree(prelist);//以先根遍历序列构造的一棵二叉树(2)bitree
5、.preOrder();//先根次序遍历的递归算法(3)leaf(bitree);(4)(5)Stringprelist2[]={"A","B",null,null,"C"};//先根遍历序列(6)BinaryTreebitree2=newBinaryTree(prelist2);//以先根遍历序列构造的一棵二叉树(7)bitree2.preOrder();//先根次序遍历的递归算法(8)leaf(bitree2);(9)(10)}(11)}运算结果:(2)求二叉树中叶
6、子节点的个数//求二叉树中叶子结点的个数的递归算法publicclassgetLeaves{publicstaticintgetLeaves(BinaryTreebitree){returngetLeaves(bitree.root);}publicstaticintgetLeaves(BinaryNodep){inti=0;if(p!=null){if(p.left==null&&p.right==null){i++;}getLeaves(p.left);getLeaves(
7、p.right);}System.out.println(i);return0;}publicstaticvoidmain(Stringargs[]){..Stringprelist[]={"A","B","D",null,"G",null,null,null,"C","E",null,null,"F","E"};BinaryTreebitree=newBinaryTree(prelist);bitree.preOrder();getLeaves(bitree);Str
8、ingprelist2[]={"A","B",null,null,"C"};BinaryTreebitree2=newBinaryTree(prelist2);bitree2.preOrder();getLeaves(bitree2);}}运算结果:(3)将每个结点的左子树和右子树交换//将二叉树的每个结点的左右子树交换的递归算法//交换二叉树的左右子树的递归算法的实现publicclassBitree_revolute{