下载

0下载券

加入VIP
  • 专属下载券
  • 上传内容扩展
  • 资料优先审核
  • 免费资料无限下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 二叉树的各种操作

二叉树的各种操作.doc

二叉树的各种操作

Hulda柳青
2019-05-11 0人阅读 举报 0 0 0 暂无简介

简介:本文档为《二叉树的各种操作doc》,可适用于IT/计算机领域

fdsafdsecpp:Definestheentrypointfortheconsoleapplication#include"stdafxh"#include"iostreamh"#include"stringh"#include"malloch"#include"stdioh"#defineclassComplex{构造复数类public:charcdoublexdoubley}classBiTNode{public:ComplexdataBiTNode*lchild,*rchild}classBinaryTree{二叉树基本操作的成员函数public:boolCreateBitree(BiTNode*T)创建二叉树boolVisit(charch,inti,BiTNode*T)访问二叉树字符数组用于传递要查找的复数的名字boolPreOrderTraverse(charch,intk,BiTNode*T)先序遍历二叉树boolInsertChild(BiTNode*T)插入二叉树(结点),T指向二叉树中要插入的结点,T为传递插入复数的指针boolDeleteChild(BiTNode*T)删除二叉树(结点)的左子树或右子树,限制为要删除的某个结点的左子树或右子树不能有同时有左右字子树}BiTNode*TRootTRoot为二叉树的最原始的根结点BinaryTree*mytree=newBinaryTree()intn=charche存储查找的复数的名字boolBinaryTree::DeleteChild(BiTNode*T)删除左子树或右子树{BiTNode*TempTcharLRcout<<"请输入你想删除结点的是左子树还是右子树lORr="cin>>LRif(LR=='l'){if(!(T>lchild||T>rchild))cout<<"不存在左子树和右子树!"<<endlelse{if(T>lchild==)cout<<"不存在左子树!"<<endl<<endlelse{TempT=T>lchildif(!(TempT>lchild||TempT>rchild))T>lchild=else{if(TempT>lchild==)T>lchild=TempT>rchildelseT>lchild=TempT>lchild}}}}if(LR=='r')是l=='r',不是l='r'{if(!(T>lchild||T>rchild))cout<<"不存在左子树和右子树!"<<endlelse{if(T>rchild==)cout<<"不存在右子树!"<<endl<<endlelse{TempT=T>rchildif(!(TempT>lchild||TempT>rchild))T>rchild=else{if(TempT>lchild==)T>rchild=TempT>rchildelseT>rchild=TempT>lchild}}}}mytree>PreOrderTraverse(che,,TRoot)returntrue}boolBinaryTree::InsertChild(BiTNode*T)插入左子树或右子树{BiTNode*IT,*TempTIT插入复数的指针,TempT为中间变量指针charLRIT=(BiTNode*)malloc(sizeof(BiTNode))开辟空间cout<<"请输入你想插入的是左子树还是右子树lORr="cin>>LRcout<<"请输入复数的名字:name="cin>>IT>dataccout<<"请输入复数的虚部:x="cin>>IT>dataxcout<<"请输入复数的实部:y="cin>>IT>datayif(LR=='l'){if(T>lchild==){T>lchild=ITIT>lchild=IT>rchild=}else{TempT=T>lchildT>lchild=ITIT>lchild=TempTIT>rchild=}}if(LR=='r'){if(T>rchild==){T>rchild=ITIT>lchild=IT>rchild=}else{TempT=T>rchildT>rchild=ITIT>rchild=TempTIT>lchild=}}mytree>PreOrderTraverse(che,,TRoot)returntrue}boolBinaryTree::Visit(charch,intk,BiTNode*T)访问二叉树{if(k==)输出功能{printf("s=fifn",T>datac,T>datax,T>datay)}if(k==){if(strcmp(ch,T>datac)==)查找复数功能{printf("s=fifn",T>datac,T>datax,T>datay)}}if(k==)插入复数功能{if(strcmp(ch,T>datac)==)mytree>InsertChild(T)}if(k==)删除功能{if(strcmp(ch,T>datac)==)mytree>DeleteChild(T)}returntrue}boolBinaryTree::PreOrderTraverse(charch,intk,BiTNode*T)先序遍历二叉树{BinaryTree*mytree=newBinaryTree()if(T){if(mytree>Visit(ch,k,T))if(mytree>PreOrderTraverse(ch,k,T>lchild))if(mytree>PreOrderTraverse(ch,k,T>rchild))returntruereturnfalse}elsereturntrue}boolBinaryTree::CreateBitree(BiTNode*T)创建二叉树{BinaryTree*mytree=newBinaryTree()charch,echcin>>chif(ch=='n')T=else{ech=chif(n==)TRoot=TelseT=(BiTNode*)malloc(sizeof(BiTNode))cout<<"请输入复数的名字:name="cin>>T>dataccout<<"请输入复数的虚部:x="cin>>T>dataxcout<<"请输入复数的实部:y="cin>>T>datayn初始化的复数的个数mytree>CreateBitree(T>lchild)mytree>CreateBitree(T>rchild)}returntrue}voidmenu()程序界面{cout<<"*************************************************************"<<endlcout<<"二叉树的操作"<<endlcout<<"*************************************************************"<<endlcout<<":创建二叉树及输出"<<endlcout<<":查找根结点的左子树或右子树"<<endlcout<<":插入根结点的左子树或右子树"<<endlcout<<":删除根结点的左子树或右子树"<<endlcout<<":查看已存在的二叉树"<<endlcout<<":程序退出"<<endlcout<<"*************************************************************"<<endlcout<<"请多指教!欢迎使用!"<<endlcout<<"*************************************************************"<<endlcout<<"输入提示:(创建二叉树时)"<<endlcout<<"当输入子母“n”时表示不创建左子树或右子树"<<endlcout<<"当输入非子母“n”时表示创建左子树或右子树"<<endl}intmain(intargc,char*argv)主函数{BiTNode*TBinaryTree*mytree=newBinaryTree()intOPTIONT=(BiTNode*)malloc(sizeof(BiTNode))loop:menu()cout<<endl<<endl<<"请输入你要执行的功能:"cin>>OPTIONswitch(OPTION){case::mytree>CreateBitree(T)创建二叉树cout<<endl<<endl<<"下面是已经存在的复数!"<<endlmytree>PreOrderTraverse(che,,TRoot)先序遍历二叉树cout<<endl<<endlgotoloopcase:cout<<endl<<endl<<"请输入你要查找的复数的名字name="cin>>chemytree>PreOrderTraverse(che,,TRoot)先序遍历二叉树及查找cout<<endl<<endlgotoloopcase:cout<<endl<<endl<<"请输入你要插入的根结点的复数的名字name="cin>>chemytree>PreOrderTraverse(che,,TRoot)先序遍历二叉树及插入cout<<endl<<endlgotoloopcase:cout<<endl<<endl<<"请输入你要删除的根结点的复数的名字name="cin>>chemytree>PreOrderTraverse(che,,TRoot)先序遍历二叉树及删除cout<<endl<<endlgotoloopcase:cout<<endl<<endl<<"下面是已经存在的复数!"<<endlmytree>PreOrderTraverse(che,,TRoot)先序遍历二叉树cout<<endl<<endlgotoloopcase:gotoexit}exit:return}

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

评分:

/16

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利