C++程序设计YDaniel Liang 第十七章课后习题答案.docx
- 文档编号:30206651
- 上传时间:2023-08-07
- 格式:DOCX
- 页数:21
- 大小:16.04KB
C++程序设计YDaniel Liang 第十七章课后习题答案.docx
《C++程序设计YDaniel Liang 第十七章课后习题答案.docx》由会员分享,可在线阅读,更多相关《C++程序设计YDaniel Liang 第十七章课后习题答案.docx(21页珍藏版)》请在冰豆网上搜索。
C++程序设计YDanielLiang第十七章课后习题答案
Exercise17_2
#include
#include
#include
#include"Queue.h"
usingnamespacestd;
#ifndefBINARYTREE_H
#defineBINARYTREE_H
template
classTreeNode
{
public:
Telement;//Elementcontainedinthenode
TreeNode
TreeNode
TreeNode()//No-argconstructor
{
left=NULL;
next=NULL;
}
TreeNode(Telement)//Constructor
{
this->element=element;
left=NULL;
right=NULL;
}
};
template
classBinaryTree
{
public:
BinaryTree();
BinaryTree(Telements[],intarraySize);
boolinsert(Telement);
voidinorder();
voidpreorder();
voidpostorder();
intgetSize();
boolsearch(Telement);
voidbreadthFirstTraversal();
intdepth();
private:
TreeNode
intsize;
voidinorder(TreeNode
voidpostorder(TreeNode
voidpreorder(TreeNode
boolsearch(Telement,TreeNode
intdepth(TreeNode
};
template
BinaryTree
:
BinaryTree()
{
root=NULL;
size=0;
}
template
BinaryTree
:
BinaryTree(Telements[],intarraySize)
{
root=NULL;
size=0;
for(inti=0;i { insert(elements[i]); } } /*Insertelementintothebinarytree*Returntrueiftheelementisinsertedsuccessfully *Returnfalseiftheelementisalreadyinthelist*/ template boolBinaryTree : insert(Telement) { if(root==NULL) root=newTreeNode else { //Locatetheparentnode TreeNode TreeNode while(current! =NULL) if(element { parent=current; current=current->left; } elseif(element>current->element) { parent=current; current=current->right; } else returnfalse;//Duplicatenodenotinserted //Createthenewnodeandattachittotheparentnode if(element parent->left=newTreeNode else parent->right=newTreeNode } size++; returntrue;//Elementinserted } /*Inordertraversal*/ template voidBinaryTree : inorder() { inorder(root); } /*Inordertraversalfromasubtree*/ template voidBinaryTree : inorder(TreeNode { if(root==NULL)return; inorder(root->left); cout< inorder(root->right); } /*Postordertraversal*/ template voidBinaryTree : postorder() { postorder(root); } /**Inordertraversalfromasubtree*/ template voidBinaryTree : postorder(TreeNode { if(root==NULL)return; postorder(root->left); postorder(root->right); cout< } /*Preordertraversal*/ template voidBinaryTree : preorder() { preorder(root); } /*Preordertraversalfromasubtree*/ template voidBinaryTree : preorder(TreeNode { if(root==NULL)return; cout< preorder(root->left); preorder(root->right); } /*Getthenumberofnodesinthetree*/ template intBinaryTree : getSize() { returnsize; } template voidBinaryTree : breadthFirstTraversal() { Queue if(root! =NULL)queue.enqueue(root); while(queue.getSize()>0) { TreeNode cout< if((node->left)! =NULL) queue.enqueue(node->left); if((node->right)! =NULL) queue.enqueue(node->right); } } #endif intmain() { BinaryTree tree1.insert("George"); tree1.insert("Michael"); tree1.insert("Tom"); tree1.insert("Adam"); tree1.insert("Jones"); tree1.insert("Peter"); tree1.insert("Daniel"); cout<<"Inorder(sorted): "; tree1.inorder(); cout<<"\nPostorder: "; tree1.postorder(); cout<<"\nPreorder: "; tree1.preorder(); cout<<"\nThenumberofnodesis"< intnumbers[]= { 2,4,3,1,8,5,6,7 }; BinaryTree cout<<"\nInorder(sorted): "; tree2.inorder(); //Testbreadth-first cout<<"\nBreadth-first: "; tree2.breadthFirstTraversal(); return0; } Exercise17_4 #include #include #include"GenericStack.h" #include"LinkedList.h" usingnamespacestd; #ifndefBINARYTREE_H #defineBINARYTREE_H template classTreeNode { public: Telement;//Elementcontainedinthenode TreeNode TreeNode TreeNode()//No-argconstructor { left=NULL; next=NULL; } TreeNode(Telement)//Constructor { this->element=element; left=NULL; right=NULL; } }; template classBinaryTree { public: BinaryTree(); BinaryTree(Telements[],intarraySize); boolinsert(Telement); voidinorder(); voidpreorder(); voidpostorder(); intgetSize(); boolsearch(Telement); voidbreadthFirstTraversal(); intdepth(); private: TreeNode intsize; voidinorder(TreeNode voidpostorder(TreeNode voidpreorder(TreeNode boolsearch(Telement,TreeNode intdepth(TreeNode }; template BinaryTree : BinaryTree() { root=NULL; size=0; } template BinaryTree : BinaryTree(Telements[],intarraySize) { root=NULL; size=0; for(inti=0;i { insert(elements[i]); } } /*Insertelementintothebinarytree*Returntrueiftheelementisinsertedsuccessfully *Returnfalseiftheelementisalreadyinthelist*/ template boolBinaryTree : insert(Telement) { if(root==NULL) root=newTreeNode else { //Locatetheparentnode TreeNode TreeNode while(current! =NULL) if(element { parent=current; current=current->left; } elseif(element>current->element) { parent=current; current=current->right; } else returnfalse;//Duplicatenodenotinserted //Createthenewnodeandattachittotheparentnode if(element parent->left=newTreeNode else parent->right=newTreeNode } size++; returntrue;//Elementinserted } /*Inordertraversal*/ template voidBinaryTree : inorder() { inorder(root); } /*Inordertraversalfromasubtree*/ template voidBinaryTree : inorder(TreeNode { if(root==NULL)return; Stack stack.push(root); LinkedList while(! stack.isEmpty()) { TreeNode if(node->left! =NULL&&! processedList.contains(node->left)) stack.push(node->left); else { cout< processedList.add(node); stack.pop(); if(node->right! =NULL) stack.push(node->right); } } } /*Getthenumberofnodesinthetree*/ template intBinaryTree : getSize() { returnsize; } #endif intmain() { BinaryTree tree1.insert("George"); tree1.insert("Michael"); tree1.insert("Tom"); tree1.insert("Adam"); tree1.insert("Jones"); tree1.insert("Peter"); tree1.insert("Daniel"); cout<<"Inorder(sorted): "; tree1.inorder(); cout<<"\nThenumberofnodesis"< intnumbers[]= { 2,4,3,1,8,5,6,7 }; BinaryTree cout<<"\nInorder(sorted): "; tree2.inorder(); return0; } Exercise17_6 #include #include #include"GenericStack.h" #include"LinkedList.h" usingnamespacestd; #ifndefBINARYTREE_H #defineBINARYTREE_H template classTreeNode { public: Telement;//Elementcontainedinthenode TreeNode TreeNode TreeNode()//No-argconstructor { left=NULL; next=NULL; } TreeNode(Telement)//Constructor { this->element=element; left=NULL; right=NULL; } }; template classBinaryTree { public: BinaryTree(); BinaryTree(Telements[],intarraySize); boolinsert(Telement); voidinorder(); voidpreorder(); voidpostorder(); intgetSize(); boolsearch(Telement); voidbreadthFirstTraversal(); intdepth(); private: TreeNode intsize; voidinorder(TreeNode voidpostorder(TreeNode voidpreorder(TreeNode boolsearch(Telement,TreeNode intdepth(TreeNode }; template BinaryTree : BinaryTree() { root=NULL; size=0; } template BinaryTree : BinaryTree(Telements[],intarraySize) { root=NULL; size=0; for(inti=0;i { insert(elements[i]); } } /*Insertelementintothebinarytree*Returntrueiftheelementisinsertedsuccessfully *Returnfalseiftheelementisalreadyinthelist*/ template boolBinaryTree : insert(Telement) { if(root==NULL) root=newTreeNode else { //Locatetheparentnode TreeNode TreeNode while(current! =NULL) if(element { parent=current; current=current-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+程序设计YDaniel Liang 第十七章课后习题答案 C+ 程序设计 YDaniel 第十七 课后 习题 答案