用二叉树实现存储信息_第1页
用二叉树实现存储信息_第2页
用二叉树实现存储信息_第3页
用二叉树实现存储信息_第4页
用二叉树实现存储信息_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用二叉树实现存储信息用二叉树实现存储信息.txt老子忽悠孩子叫教育,孩子忽悠老子叫欺骗,互相忽悠叫代沟。男人这花花世界,我要用什么颜色来吸引你。#include<iostream>#include<stdlib.h>usingnamespacestd;typedefstruct_studentintid;char20Name;IntAge;intMath;/(数学成绩);/学生结构体structtreeitemstructtreeitem*lchild;structtreeitem*rchild;struct_studentmystudent;/二叉树结构体classS

2、tudentpublic:Student(void);Student(void);voidCreate(structtreeitem*Tnode);/创建voidFind(structtreeitem*tree,inti);查看节点是否存在voidSearch(Student&tree);/查询节点voidChange(structtreeitem*Tnode,inti);/修改voidDeleteNode(structtreeitem*tree,inti);/删除Student*node;/根节点private:booltj;inti_id,i_age,i_math;charc_ch

3、;=.cpp=Student:Student(void)(tj=false;)Student:Student(void)()voidStudent:Create(structtreeitem*Tnode)/创建1(cin>>i_id,c_ch,i_age,i_math;if(id!=null&&ch!="&&age!=null&&math!=null)(struct_student*Ts;Ts->id=i_id;Ts->Name=c_ch;Ts->Age=i_age;Ts->Math=imath;Tn

4、ode=(structtreeitem*)malloc(sizeof(structtreeitem);Tnode->mystudent=Ts;Create(Tnode->lchild);/生成左子树Create(Tnode->rchild);/生成右子树cout<<"CreateComplated!"<<endl;elseTnode=NULL;cout<<"NoCreateComplated!"<<endl;voidBinSTree:Find(structtreeitem*tree,int

5、i)/查找if(tree!=NULL)if(tree->id=i)tj=true;return;if(tree->lchild!=NULL)f(tree->lchild->id=i)tj=true;return;if(tree->rchild!=NULL)f(tree->rchild->id=i)tj=true;return;Find(tree->lchild,i);Find(tree->rchild,i);voidStudent:Search(Student&tree)if(tree!NULL)if(tree->lchild

6、->lchild=NULL&&tree->lchild->rchild=NULL)returntree->lchild;elsef(tree->rchild->lchild=NULL&&tree->rchid->rchild=NULL)returntree->rchild;returnSearch(tree->lchild);returnSearch(tree->rchild);voidStudent二Change(structtreeitem*Tnode,inti)Find(Tnode,i);i

7、f(!tj)cout<<"无止匕节点!"<<endl;elsecin>>i_age,i_math,c_ch;Tnode->mystudent.Age=i_age;Tnode->mystudent.Name=c_ch;Tnode->mystudent.Math=i_math;voidStudent:DeleteNode(structtreeitem*tree,inti)Find(tree,i);if(!tj)cout<<"无止匕节点!"<<endl;return;if(tree!

8、=NULL)if(node->id=i)/要删除的正好是根节点f(node->lchild=NULL&&node->rchild=NULL)/只有一个根节点的情况deletenode;node=NULL;cout<<"已删除节点,当前树为空"<<endl;return;elseif(node->lchild!=NULL&&node->rchild=NULL)/有左孩子没右孩子newtreeitem*p=node;treeitem*dtreeitem(Search(node)->id)

9、;d->lchild=tree->lchild;d->rchild=NULL;node=d;deletep;cout<<"ID值为"<<i<<"的节点已被删除"<<endl;elseif(node->rchild!=NULL&&node->lchild=NULL)/有右孩子没左孩子treeitem*p=node;treeitem*d=newtreeitem(Search(node)->contents);d->lchild=NULL;d->rc

10、hild=tree->rchild;d;node =deletep;cout<<"ID值为"<<i<<"的节点已被删除"<<endl;else/有左、右孩子newtreeitem*p=node;treeitem*dtreeitem(Search(node)->id);d->lchild=tree->lchild;d->child=tree->rchild;node=d;deletep;cout<<"ID值为"<<i<<

11、;"的节点已被删除"<<endl;if(tree->lchild!=NULL)/左孩子,且正是要查找的if(tree->lchild->id=i)/子是要查找的if(tree->lchild->lchildtree->lchild->rchild!=NULL)treeitem*p=tree->lchild;不是根节点,树还有若根节点的左孩=NULL&&tree->lchild=tree->lchild->rchild;deletep;cout<<"ID值为&q

12、uot;<<i<<"的节点已被删除"<<endl;)elsef(tree->lchild->lchild=NULL&&tree->lchild->rchild=NULL)deletetree->lchild;tree->lchild=NULL;cout<<"ID值为"<<i<<"的节点已被删除'<<endl;)elsef(tree->lchild->lchild!=NULL&&

13、;tree->lchild->rchild=NULL)treeitem*p=tree->lchild;tree->lchild=tree->lchild->lchild;deletep;cout<<"ID值为"<<i<<"的节点已被删除"<<endl;elseif(tree->lchild->lchild!=NULL&&tree->lchild->rchild!=NULL)treeitem*p=tree->lchild;tre

14、eitem*d=newtreeitem(Search(node)->id);d->left=tree->lchildt->lchild;d->rchild=tree->lchild->rchild;tree->lchild = d;deletep;return;f(tree->rchild!=NULL)右孩子,且正是要查找的不是根节点,树还有NULL &&f(tree->rchild->id=i)f(tree->rchild->lchildtree->rchild->rchild=NULL

15、)deletetree->rchild;tree->rchild=NULL;cout<<"ID值为"<<i<<"的节点已被删除'<<endl;)elsef(tree->rchild->lchild!=NULL&&tree->rchild->rchild=NULL)treeitem*p=tree->rchild;tree->rchild=tree->rchild->lchild;deletep;cout<<"ID值

16、为"<<i<<"的节点已被删除'<<endl;)elseif(tree->rchild->child=NULL&&tree->rchild->rchild!=NULL)treeitem*p=tree->rchild;tree->rchild=tree->rchild->rchild;deletep;cout<<"ID值为"<<i<<"的节点已被删除"<<endl;elseif(tree->rchild->lchild!=NULL&&tree->rchild->rchild!=NULL)treei

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论