



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.#include#define MAX 30 /树节点的最大数using namespace std;templateclass nodepublic:node()child = nextsibling = NULL;T ele; /节点值node*child, *nextsibling;/左儿子右兄弟;templateclass Mytreepublic:Mytree()tree = NULL;Mytree()delete tree;void CreatTree(node*); /构造孩子兄弟表示法的树T GetParent(node*,T t); /返回树的父亲节点T GetLeftChild(node*,T); /返回树的最左儿子T GetRightsibling(node*,T); /返回树的最右兄弟T GetRoot(node*); /返回树的根节点node* RetPoint(T, node*); /返回值为t的节点的指针node* RetParentPoint(T, node*);/返回值为t的节点父亲指针void Display(node*); /树的左儿子右兄弟表示法的前序、中序、后序遍历private:void preTraverseTree(node*); /递归先序遍历void InTraverseTree(node*); /递归中序遍历void PostTraverseTree(node*); /递归后序遍历node *tree;templatevoid Mytree:CreatTree(node*tree) /构造左儿子右兄弟表示的树 /以tree为根节点构建if (*tree) != NULL)cout 输入节点 ele 的左儿子右兄弟(没有的话输入#):;node*a = new node;node*b = new node;cin a-ele b-ele;if (a-ele != #) (*tree)-child = a; /有左儿子else (*tree)-child = NULL;if (b-ele != #) (*tree)-nextsibling = b; /有有兄弟else (*tree)-nextsibling = NULL;CreatTree(&(*tree)-child); /递归构造树CreatTree(&(*tree)-nextsibling);templateT Mytree:GetParent(node *tree,T t) /返回节点值为t的父亲node*p = RetParentPoint(t, tree);if (p)return p-ele;else return NULL;templateT Mytree:GetRoot(node*tree) /返回树的根节点值return tree-ele;templateT Mytree:GetLeftChild(node*tree,T t) /返回树的左儿子node*p=RetPoint(t, tree);if (p&p-child) return p-child-ele;else return NULL;templateT Mytree:GetRightsibling(node*tree,T t) /得到树tree的右兄弟node*p=RetPoint(t, tree);if (p&p-nextsibling) return p-nextsibling-ele;else return NULL;templatevoid Mytree:Display(node*tree) /三种递归遍历cout 先序递归遍历:;preTraverseTree(tree);cout endl;cout 中序递归遍历:;InTraverseTree(tree);cout endl;cout 后序递归遍历:;PostTraverseTree(tree);cout endl;templatevoid Mytree:preTraverseTree(node*tree) /先序递归遍历if (tree)cout ele child);preTraverseTree(tree-nextsibling);template void Mytree:InTraverseTree(node*tree) /中序递归遍历if (tree)InTraverseTree(tree-child);cout ele nextsibling);templatevoid Mytree:PostTraverseTree(node*tree) /后序递归遍历if(tree)PostTraverseTree(tree-nextsibling);PostTraverseTree(tree-child);cout ele ;templatenode* Mytree:RetPoint(T t, node* tree) /返回树节点值为t的指针if (tree)if (tree-ele = t) return tree;else if (RetPoint(t, tree-child)!=NULL)return RetPoint(t, tree-child);else if (RetPoint(t, tree-nextsibling) != NULL)return RetPoint(t, tree-nextsibling);else return NULL;else return NULL;templatenode* Mytree:RetParentPoint(T t, node*tree)if (tree&tree-child)if (tree-ele = t) return tree;else if (RetParentPoint(t, tree-child)return RetParentPoint(t, tree-child);else if (RetParentPoint(t, tree-nextsibling)return RetParentPoint(t, tree-nextsibling);else return NULL;int main()Mytree mytree;node *root = new node;cout root-ele;mytree.CreatTree(&root);cout树的根:mytree.GetRoot(root)endl;cout t;cout t的左儿子 mytree.GetLeftChild(root, t) endl;cout t的右兄弟 mytree.GetRightsibling(root, t) endl;cout t的父节点: mytree.GetParent(root,t) endl;cout 树的左儿子右兄弟表示法的三种遍历: endl;mytree.Display(root);return 0;/*输入根节点:a输入节点a的左儿子右兄弟(没有的话输入#):b c输入节点b的左儿子右兄弟(没有的话输入#):d e输入节点d的左儿子右兄弟(没有的话输入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版会计师事务所专项审计与调查服务合同
- 二零二五年度毛绒玩具产品库存管理合同
- 2025版离婚协议签订后反悔的婚姻调解程序
- 二零二五年度生态环保工程承建协议合同
- 2025版多功能农业机耕服务合同
- 2025版房产抵押贷款期限延长合同规定
- 二零二五版吊装作业安全教育培训及协议
- 2025版离婚夫妻子女抚养权及财产分配及子女教育协议
- 二零二五年度城市轨道交通招标合同样本
- 二零二五年度新能源汽车充电站项目可研报告编制合同
- 2025-2026秋学期学校主题升旗仪式安排表+主题班会安排表
- 出租充电桩车位合同范本
- 2025年广元市中考数学试题卷
- 人工晶体创新创业项目商业计划书
- 2025年9月新版劳务用工合同范本(可规避风险)
- 开放性骨折感染预防的护理
- 特殊困难老年人家庭适老化改造项目方案投标文件(技术方案)
- 特殊药品管理知识讲课文档
- 2025至2030中国智能算力行业发展趋势分析与未来投资战略咨询研究报告
- 2025年小额贷款合同范本
- 混泥土计量管理办法
评论
0/150
提交评论