- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二叉树的创建C
递归法构造二叉树#includeiostreamusing namespace std;struct Tree ????????????????????????????????//用结构体创建节点{char element;Tree *lchilden;Tree?*rchilden;};Tree?*Create()??????????????????????????????//创建树{??? char ch;??? cin ch;???if( ch ==#?)????{???????? return NULL;????}??? else????{?Tree *root=(Tree*)malloc(sizeof(Tree));root-element = ch;???????? root-lchilden = Create();???????????????????????????????//左孩子递归???????? root-rchilden = Create();???????????????????????????????//右孩子递归???????? return root;????}}void visit(Tree*t)??????????????????????????????????????//访问方法{cout t-element;}void preOrder(Tree *t)???????????????????????????//遍历二叉树{if?(t!=NULL)?{visit(t);preOrder(t-lchilden);preOrder(t-rchilden);}}int main()????????????????????????????????????????????????//测试{Tree *p;p?= Create();preOrder(p);system(pause);return 0;}如何正确的理解递归法?递归一定要有返回,此例中有两个返回的条件 return NULL ; return root;?递归是一个不断进栈和出栈的过程。出栈时理论上数据是没了,但是因为是在堆里创建结构体所以结构体还在,通过一个头指针把整个链表串起来。这个程序是以先序的方式输入数据的;以一个节点为例应输入A##;应为A不为#,进入else语句。先执行左孩子递归,此时输入为#,return NULL;左孩子的递归执行完了,语句往下走,执行右孩子递归。此时输入为#,return NULL;右孩子的递归执行完了。程序再往下走,return root;返回指针root;此时root就为头指针;现在已两个结点为例应输入AB###;应为A不为#,进入else语句。先执行左孩子递归,此时输入为B,root指向B;B进入递归(A-lchilden-B)先执行左孩子递归,此时输入为#,return NULL;(B的左孩子的全部递归执行完了)语句往下走,执行右孩子递归。此时输入为#,return NULL;(B的右孩子右孩子的递归执行完了。)程序再往下走,return root;返回指针root;此时root指向A;(A的左孩子全部执行完了)程序进入了下一条语句执行A的右孩子此时输入为#,return NULL;(此时A的右孩子的递归执行完了,)程序再往下走,return root;返回root;此时root为头指针。此时应输入ABC##DE#G##F###?模拟程序执行如下应为A不为#,进入else语句。先执行左孩子递归,此时输入为B,root指向B;B进入递归(A-lchilden-B)?????应为B不为#,进入else语句。?????????先执行左孩子递归,此时输入为C,root指向C;C进入递归(A-lchilden-B-lchilden-C )??????????????先执行左孩子递归,此时输入为#,return NULL;(C的左孩子的全部递归执行完了)?????????语句往下走,执行右孩子递归。此时输入为#,return NULL;(C的右孩子右孩子的递归执行完了)?????????程序再往下走,return root;返回指针root;此时root指向B;(B的左孩子全部执行完了)???????程序进入了下一条语句执行B的右孩子???????语句往下走,执行右孩子递归。应为E不为#,进入else语句。????先执行左孩子递归,此时输入为#,return NULL;(E的左孩子的全部递归执行完了)?语句往下走,执行右孩子递归。.................................................
您可能关注的文档
- 中原城市群城乡统筹建设的基本思路与途径_郭小燕.pdf
- 中国世界空白底图!2016级高一补课.doc
- 中国企业总会计师的典范_刘玉廷.pdf
- 中国信息产业与经济增长关系实证分析.pdf
- 中国农业大学2017年《电路原理》考试大纲_中国农大考研网.pdf
- 中国人民大学2017年翻译硕士考研初试复试流程.pdf
- 中国区域地理背诵知识点列表.docx
- 中国地质大学2017年地空学院《勘探地球物理基础》硕士入学考试大纲.pdf
- 中国地质大学2017年外国语学院《英语语言文学基础》硕士入学考试大纲.pdf
- 中国地质大学2017年地空学院《应用地球物理基础》硕士入学考试大纲.pdf
- 南京市第十三中学2024-2025学年高二上学期10月期中英语试题及答案.docx
- 江阴市四校2023-2024学年高二上学期期中联考语文试题(原卷版).docx
- 南京市第十三中学2024-2025学年高二上学期期中考试数学试题及答案.docx
- 江阴市四校联考2023-2024学年高二11月期中生物试题(原卷版).docx
- 南京市第十三中学2024-2025学年高二上学期10月期中生物试题(含答案).docx
- 苏州市2024-2025学年高一上学期期中调研数学试卷.pdf
- 南京市2024-2025学年高二上学期11月期中考试+化学试题(无答案).docx
- 江阴市四校联考2023-2024学年高二上学期11月期中化学试题(原卷版).docx
- 物理奥数竞赛题.pdf
- 第九届高校廉洁教育系列活动课堂实践案例遴选名单.docx
文档评论(0)