《Java语言程序设计基础篇》第10版 梁勇 著第二十五章练习题答案.docx
- 文档编号:12623213
- 上传时间:2023-04-20
- 格式:DOCX
- 页数:202
- 大小:62.27KB
《Java语言程序设计基础篇》第10版 梁勇 著第二十五章练习题答案.docx
《《Java语言程序设计基础篇》第10版 梁勇 著第二十五章练习题答案.docx》由会员分享,可在线阅读,更多相关《《Java语言程序设计基础篇》第10版 梁勇 著第二十五章练习题答案.docx(202页珍藏版)》请在冰豆网上搜索。
《Java语言程序设计基础篇》第10版梁勇著第二十五章练习题答案
《Java语言程序设计(基础篇)》(第10版梁勇著)
第二十五章练习题答案
25.1
publicclassExercise25_01{
publicstaticvoidmain(String[]args){
newExercise25_01();
}
publicExercise25_01(){
BinaryTree
System.out.print("Theheightoftreeis"+tree.height());
tree.insert("Red");
System.out.print("\nTheheightoftreeis"+tree.height());
tree.insert("Green");
System.out.print("\nTheheightoftreeis"+tree.height());
BinaryTree
{"Tom","George","Jean","Jane","Kevin","Peter","Susan",
"Jen","Kim","Michael","Michelle"});
System.out.print("\nThebreadth-firsttraversalis");
tree1.breadthFirstTraversal();
System.out.print("\nTheheightoftree1is"+tree1.height());
BinaryTree
newBinaryTree
System.out.print("\nThebreadth-firsttraversalfortree2is");
tree2.breadthFirstTraversal();
System.out.print("\nTheheightoftree2is"+tree2.height());
}
publicclassBinaryTree
protectedTreeNode
protectedintsize=0;
/**Createadefaultbinarytree*/
publicBinaryTree(){
}
/**Createabinarytreefromanarrayofobjects*/
publicBinaryTree(E[]objects){
for(inti=0;i insert(objects[i]); } /** *Returnthedepthofthisbinarytree.Depthisthenumberofthenodesin *thelongestpathofthetree */ publicintheight(){ returnheight(root); } privateintheight(TreeNoderoot){ if(root==null){ return0; }else{ return1+Math.max(height(root.left),height(root.right)); } } /**Displaysthenodesinbreadth-firsttraversal*/ publicvoidbreadthFirstTraversal(){ java.util.LinkedList newjava.util.LinkedList if(root==null) return; queue.add(root); while(! queue.isEmpty()){ TreeNode System.out.print(node.element+""); if(node.left! =null) queue.add(node.left); if(node.right! =null) queue.add(node.right); } } /**Returnstrueiftheelementisinthetree*/ publicbooleansearch(Ee){ TreeNode while(current! =null){ if(pareTo(current.element)<0){ current=current.left; }elseif(pareTo(current.element)>0){ current=current.right; }else //elementmatchescurrent.element returntrue;//Elementisfound } returnfalse; } /** *InsertelementointothebinarytreeReturntrueiftheelementis *insertedsuccessfully */ publicbooleaninsert(Ee){ if(root==null) root=createNewNode(e);//Createanewroot else{ //Locatetheparentnode TreeNode TreeNode while(current! =null) if(pareTo(current.element)<0){ parent=current; current=current.left; }elseif(pareTo(current.element)>0){ parent=current; current=current.right; }else returnfalse;//Duplicatenodenotinserted //Createthenewnodeandattachittotheparentnode if(pareTo(parent.element)<0) parent.left=createNewNode(e); else parent.right=createNewNode(e); } size++; returntrue;//Elementinserted } protectedTreeNode returnnewTreeNode } /**Inordertraversalfromtheroot*/ publicvoidinorder(){ inorder(root); } /**Inordertraversalfromasubtree*/ protectedvoidinorder(TreeNode if(root==null) return; inorder(root.left); System.out.print(root.element+""); inorder(root.right); } /**Postordertraversalfromtheroot*/ publicvoidpostorder(){ postorder(root); } /**Postordertraversalfromasubtree*/ protectedvoidpostorder(TreeNode if(root==null) return; postorder(root.left); postorder(root.right); System.out.print(root.element+""); } /**Preordertraversalfromtheroot*/ publicvoidpreorder(){ preorder(root); } /**Preordertraversalfromasubtree*/ protectedvoidpreorder(TreeNode if(root==null) return; System.out.print(root.element+""); preorder(root.left); preorder(root.right); } /**Innerclasstreenode*/ publicclassTreeNode Eelement; TreeNode TreeNode publicTreeNode(Ee){ element=e; } } /**Getthenumberofnodesinthetree*/ publicintgetSize(){ returnsize; } /**Returnstherootofthetree*/ publicTreeNodegetRoot(){ returnroot; } /**Returnsapathfromtherootleadingtothespecifiedelement*/ publicjava.util.ArrayList java.util.ArrayList TreeNode while(current! =null){ list.add(current);//Addthenodetothelist if(pareTo(current.element)<0){ current=current.left; }elseif(pareTo(current.element)>0){ current=current.right; }else break; } returnlist;//Returnanarrayofnodes } /** *Deleteanelementfromthebinarytree.Returntrueiftheelementis *deletedsuccessfullyReturnfalseiftheelementisnotinthetree */ publicbooleandelete(Ee){ //Locatethenodetobedeletedandalsolocateitsparentnode TreeNode TreeNode while(current! =null){ if(pareTo(current.element)<0){ parent=current; current=current.left; }elseif(pareTo(current.element)>0){ parent=current; current=current.right; }else break;//Elementisinthetreepointedbycurrent } if(current==null) returnfalse;//Elementisnotinthetree //Case1: currenthasnoleftchildren if(current.left==null){ //Connecttheparentwiththerightchildofthecurrentnode if(parent==null){ root=current.right; }else{ if(pareTo(parent.element)<0) parent.left=current.right; else parent.right=current.right; } }else{ //Case2: Thecurrentnodehasaleftchild //Locatetherightmostnodeintheleftsubtreeof //thecurrentnodeandalsoitsparent TreeNode TreeNode while(rightMost.right! =null){ parentOfRightMost=rightMost; rightMost=rightMost.right;//Keepgoingtotheright } //ReplacetheelementincurrentbytheelementinrightMost current.element=rightMost.element; //Eliminaterightmostnode if(parentOfRightMost.right==rightMost) parentOfRightMost.right=rightMost.left; else //Specialcase: parentOfRightMost==current parentOfRightMost.left=rightMost.left; } size--; returntrue;//Elementinserted } /**Obtainaniterator.Useinorder.*/ publicjava.util.Iteratoriterator(){ returninorderIterator(); } /**Obtainaninorderiterator*/ publicjava.util.IteratorinorderIterator(){ returnnewInorderIterator(); } //InnerclassInorderIterator classInorderIteratorimplementsjava.util.Iterator{ //Storetheelementsinalist privatejava.util.ArrayList privateintcurrent=0;//Pointtothecurrentelementinlist publicInorderIterator(){ inorder();//Traversebinarytreeandstoreelementsinlist } /**Inordertraversalfromtheroot*/ privatevoidinorder(){ inorder(root); } /**Inordertraversalfromasubtree*/ privatevoidinorder(TreeNode if(root==null) return; inorder(root.left); list.add(root.element); inorder(root.right); } /**Nextelementfortraversing? */ publicbooleanhasNext(){ if(current returntrue; returnfalse; } /**Getthecurrentelementandmovecursortothenext*/ publicObjectnext(){ returnlist.get(current++); } /**Removethecurrentelementandrefreshthelist*/ publicvoidremove(){ delete(list.get(current));//Deletethecurrentelement list.clear();//Clearthelist inorder();//Rebuildthelist } } /**Removeallelementsfromthetree*/ publicvoidclear(){ root=null; size=0; } } publicinterfaceTree /**Returntrueiftheelementisinthetree*/ publicbooleansearch(Ee); /** *InsertelementointothebinarytreeReturntrueiftheelementis *insertedsuccessfully */ publicbooleaninsert(Ee); /** *DeletethespecifiedelementfromthetreeReturntrueiftheelementis *deletedsuccessfully */ publicbooleandelete(Ee); /**Inordertraversalfromtheroot*/ publicvoidinorder(); /**Postordertraversalfromtheroot*/ publicvoidpostorder(); /**Preordertraversalfromtheroot*/ publicvoidpreorder(); /**Getthenumberofnodesinthetree*/ publicintgetSize(); /**Returntrueifthetreeisempty*/ publicbooleanisEmpty(); /**Returnaniteratortotraverseelementsinthetree*/ publicjava.util.Iteratoriterator(); } publicabstractclassAbstractTree Tree /**Inordertraversalfromtheroot*/ publicvoidinorder(){ } /**Postordertraversalfromtheroot*/ publicvoidpostorder(){ } /**Preordertraversalfromtheroot*/ publicvoidpreorder(){ } /**Returntrueifthetreeisempty*/ publicbooleanisEmpty(){ returngetSize()==0; } /**Returnaniteratortotraverseelementsinthetree*/ publicjava.util.Iteratoriterator(){ returnnull; } } } 25.1附加 importjavafx.application.Application; importjavafx.geometry.Pos; importjavafx.s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java语言程序设计基础篇 Java语言程序设计基础篇第10版 梁勇 著第二十五章练习题答案 Java 语言程序设计 基础 10 第二 十五 练习题 答案