欢迎来到天天文库
浏览记录
ID:44344468
大小:277.27 KB
页数:12页
时间:2019-10-21
《面向对象核心概念-Java实验三》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、一.实验目的掌握Java的面向对象核心概念°二.实验软件环境OracleNetbeansIDE7三.实验内容1.(必做)编程题:由数据结构可知,已知一棵二叉树的前序和中序遍历序列,则可以唯一还原岀一棵二叉树请编写一个Java的GUI程序,要达到以下两个目标:A.在界面上有两个输入框,分别接受前序和中序的字符串输入(用大写字母表示树中结点),有一个按钮Run,按下之后在一个Label处显示出该二叉树的后序序列。B.在A的基础上,把二叉树用一种可视化的方式画出来。如:A以上“可视化”的二叉树是程序根据你所输入的前序和中序列自动生成的,可以考虑自己编程实现,也
2、可以考虑使用现成的JavaTree控件。请自行在互联网上查找可用的实现。2.(必做)设计题:请设计一组类、类的继承层次和接口,对上述的可视化二叉树进行封装,然后用该封装好的可视化二叉树模块来展示一个堆排序的过程和一个哈夫曼树的构造过程。本题的重点是对可视化二叉树进行设计和包装,然后再设计一个堆排序的类和一个哈夫曼树的类,若两者都能使用同一个可视化的二叉树类(或其子类),那你的设计就是成功的了。请给出框架性代码(类定义、方法定义、成员变量定义),界面设计,方法调用序列,以及必要的文字和图表说明来细化你的设计。!1!实验的结果及分析1、前序后序字符串生成程序
3、:程序的设计思路:程序包含一个节点类(BiTreeNode)和一个树类(BiTree),前序遍历字符串储存为一个队列,中序遍历字符串储存为一个字符串。根据二叉树的Top-down递归构造过程,树的生成叫由节点递归进行,前序字符串队列在每生成一个节点后就将该节点出队,而中序字符串则会以该节点的字符进行二分。白•・・§§S,,,^>gBinaryIreeRestorehil彳•…LinChan.JavaProject.ITetbgans.EntitimsBiTree.javaBiTreelTode.javaBiTreeNode类成员一览:成员视囹••色>••
4、电曰仓BilreelTodeBilreelTode(StringstrOriTree,BilreelTodebtriParent丿StringwGeneratgLgf*tChildGtringstrChildData)GenerateRightChild(Stringstr匚hi1dl>ata)OGeneratwSubTrgQ(LinkedList5、丿getlTodeData():StringgetlTodeslTum():intmain(String[]args)gmtRightSubTree():StringisFind(Stringstrlnputed,LinkedListquelnputed)btnLe£tChiId:BilreelTodebtnRightChild:BilreelTodebtriRoot:BilreelTodeiritITodeslTum:iritstrLe£tSubTr^m:StringstrlTodeData:StringstrRightSubTrwQ:6、String主要类成员说明:strLeftSubTree对象和strRightSubTree对象:分别是左右子树的屮序历遍字符串。构造方法:privateBiTreeNode(StringstrOriTree,finalBiTreeNodebtnParent,StringstrlnputedNodeData){this.btnRoot=btnParent;String[]strAirSplited=strOriTree.split(strInputedNodeData,2);//局限:不能识别重复的元素this.strLeftSubTree=strArr7、Splited[O];this.strNodeData=strlnputedNodeData;this.strRightSubTree=strArrSplitedfl];}btnNewNode方法:改方法调用类的构造方法,返回新的节点,并对节点进行汁数。publicstaticBiTreeNodebtnNewNode(StringstrOriTree,finalBiTreeNodebtnParent,StringstrlnputedNodeData){BiTreeNodebtnNewNode=newBiTreeNode(strOriTree,btnPar8、ent,strlnputedNodeData);intNodesNum++;〃节
5、丿getlTodeData():StringgetlTodeslTum():intmain(String[]args)gmtRightSubTree():StringisFind(Stringstrlnputed,LinkedListquelnputed)btnLe£tChiId:BilreelTodebtnRightChild:BilreelTodebtriRoot:BilreelTodeiritITodeslTum:iritstrLe£tSubTr^m:StringstrlTodeData:StringstrRightSubTrwQ:
6、String主要类成员说明:strLeftSubTree对象和strRightSubTree对象:分别是左右子树的屮序历遍字符串。构造方法:privateBiTreeNode(StringstrOriTree,finalBiTreeNodebtnParent,StringstrlnputedNodeData){this.btnRoot=btnParent;String[]strAirSplited=strOriTree.split(strInputedNodeData,2);//局限:不能识别重复的元素this.strLeftSubTree=strArr
7、Splited[O];this.strNodeData=strlnputedNodeData;this.strRightSubTree=strArrSplitedfl];}btnNewNode方法:改方法调用类的构造方法,返回新的节点,并对节点进行汁数。publicstaticBiTreeNodebtnNewNode(StringstrOriTree,finalBiTreeNodebtnParent,StringstrlnputedNodeData){BiTreeNodebtnNewNode=newBiTreeNode(strOriTree,btnPar
8、ent,strlnputedNodeData);intNodesNum++;〃节
此文档下载收益归作者所有