




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
二叉树的实现.txt32因为爱心,流浪的人们才能重返家园;因为爱心,疲惫的灵魂才能活力如初。渴望爱心,如同星光渴望彼此辉映;渴望爱心,如同世纪之歌渴望永远被唱下去。#include#includeusing namespace std;#define NULL 0/二叉树的结点类class BinaryTreeNodefriend class BinaryTree;private:char element;BinaryTreeNode *left;BinaryTreeNode *right;public:BinaryTreeNode();BinaryTreeNode(const char &ele,BinaryTreeNode * l=NULL,BinaryTreeNode *r=NULL)element=ele;left=l;right=r;BinaryTreeNode *leftchild()constreturn left;BinaryTreeNode *rightchild()constreturn right;char value() const;/二叉树类的定义class BinaryTreeprivate:BinaryTreeNode * root;BinaryTreeNode *GetParent(BinaryTreeNode *root,BinaryTreeNode *current);public:/构造函数BinaryTree()root=NULL;BinaryTree(char x,BinaryTreeNode *l=NULL,BinaryTreeNode *r=NULL)root=new BinaryTreeNode(x,l,r);/void DeleteBinaryTree(BinaryTreeNode *root);/BinaryTree()DeleteBinaryTree(root);/析构函数BinaryTreeNode * Root()return root;/取根结点的值BinaryTreeNode * Root1()return &root;/取根结点的地址值,主要是为建立树的时候使用void CreateTree(const char & elem,BinaryTree &leftTree,BinaryTree & rightTree);bool isEmpty()const;BinaryTreeNode *Parent(BinaryTreeNode * current);void BuildTree(BinaryTreeNode *root);/前序访问void PreOrder(BinaryTreeNode *root)const;/中序遍历void InOrder(BinaryTreeNode *root)const;/后序遍历void PostOrder(BinaryTreeNode *root)const;/层序遍历void LevelOrder(BinaryTreeNode *root)const;/统计叶结点个数void CountLeaf(BinaryTreeNode * root,int &);int BtDepth(BinaryTreeNode *root)const;/判断是否为空树bool BinaryTree:isEmpty()constreturn(root)?true:false);/取父结点BinaryTreeNode * BinaryTree:GetParent(BinaryTreeNode *root,BinaryTreeNode *current)BinaryTreeNode *temp;if(root=NULL)return NULL;if(root-leftchild()=current)|(root-rightchild()=current)return root;if(temp=GetParent(root-leftchild(),current)!=NULL)return temp;else return GetParent(root-rightchild(),current);/BinaryTreeNode * BinaryTree:Parent(BinaryTreeNode * current)if(current=NULL)|(current=root)return NULL;return GetParent(root,current);/删除树void BinaryTree:DeleteBinaryTree(BinaryTreeNode *root)if(root)DeleteBinaryTree(root-left);DeleteBinaryTree(root-right);delete root;/创建一棵二叉树void BinaryTree:BuildTree(BinaryTreeNode *current)/采用前序遍历的方法建立一棵树,传递的参数为一个指向结点的指针的指针,目的是为了解决传值的问题/输入符号的时候,表示一棵子树结束BinaryTreeNode *current1;char ch;coutch;if(ch=) *current=NULL;/current=NULL;elsecurrent1=new BinaryTreeNode(ch);if(root=NULL)root=current1;* current=current1;BuildTree(&(*current)-left);BuildTree(&(*current)-right);/定义结束/前序访问void BinaryTree:PreOrder(BinaryTreeNode *current)constif(current!=NULL)coutelementleftchild();PreOrder(current-rightchild();/中序遍历void BinaryTree:InOrder(BinaryTreeNode *current)constif(current!=NULL)InOrder(current-leftchild();coutelementrightchild();/后序遍历void BinaryTree:PostOrder(BinaryTreeNode *current)constif(current!=NULL)PostOrder(current-leftchild();PostOrder(current-rightchild();coutelement ;/层序遍历void BinaryTree:LevelOrder(BinaryTreeNode *current)constqueueaQueue;BinaryTreeNode *pointer=current;if(pointer)aQueue.push(pointer);while(!aQueue.empty()pointer=aQueue.front();coutelementleftchild()aQueue.push(pointer-leftchild();if(pointer-rightchild()aQueue.push(pointer-rightchild();/统计叶结点个数void BinaryTree:CountLeaf(BinaryTreeNode * root,int &count)if(root!=NULL)if(root-leftchild()=NULL)&(root-rightchild()=NULL) count+;CountLeaf(root-leftchild(),count);CountLeaf(root-rightchild(),count);/计算树的高度int BinaryTree:BtDepth(BinaryTreeNode * current)const/int leftdep,rightdepreturn 0;void main()BinaryT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 煤矿安全生产专业实务注册安全工程师考试(中级)试题及答案指导(2025年)
- 2025年XX行业招聘面试实战模拟题集及解析
- 分布式光伏发电系统远程监控方案
- 牲畜家禽屠宰场污染源排查与防治方案
- 10kV架空线路地理信息系统应用方案
- 公路施工设备与材料管理方案
- 公路路基施工与处理方案
- 保障性租赁住房建筑施工组织方案
- 2025年金融行业数据治理与隐私保护在金融监管中的应用报告
- 复杂地质条件下软土地基的勘察技术研究
- 2025中国大唐集团科学技术研究总院有限公司系统单位领军人才招聘笔试参考题库附带答案详解
- 教学能力比赛现场决赛30道答辩问题要点
- 2025-2030中国卫星通信行业发展分析及投资价值预测研究报告
- 法拍房委托服务协议书范本
- 事故隐患内部报告奖励制度
- 七年级体育 运动损伤的预防和处理说课稿
- 2025年度人工智能辅助医疗合作协议范本模板4篇
- 2025年青海省农商银行农信社系统招聘笔试参考题库含答案解析
- GB/T 15561-2024数字指示轨道衡
- 2025新人教版英语七年级下不规则动词表
- 2025年江苏省常州市中考作文解析和范文
评论
0/150
提交评论