- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二叉树的相关算法操作
二叉链表的存储结构typedef?struct?tnode?{??????elemtype????????data;??????struct?tnode????????*lchild;??????struct?tnode????????*rchild;??}*bitree,?bitnode;??创建一棵二叉树(按先序序列建立)int?create_bitree(bitree?*bt)??{??????elemtype????data;????????scanf(%d,?data);??????if?(0?==?data)?{??????????*bt?=?NULL;??????}?else?{??????????*bt?=?(bitree)malloc(sizeof(bitnode));??????????if?(!(*bt))??????????????exit(OVERFLOW);??????????(*bt)-data?=?data;??????????create_bitree((*bt)-lchild);??????????create_bitree((*bt)-rchild);??????}??????return?OK;??}??按先序次序输入二叉树的结点值,0表示空树。二叉树的遍历(先序、中序、后序)void?preorder(bitree?bt,?int?(*visit)(elemtype?e))??{??????if?(bt)?{??????????visit(bt-data);??????????preorder(bt-lchild,?visit);??????????preorder(bt-rchild,?visit);??????}??}??void?inorder(bitree?bt,?int?(*visit)(elemtype?e))??{??????if?(bt)?{??????????inorder(bt-lchild,?visit);??????????visit(bt-data);??????????inorder(bt-rchild,?visit);??????}??}??void?postorder(bitree?bt,?int?(*visit)(elemtype?e))??{??????if?(bt)?{??????????postorder(bt-lchild,?visit);??????????postorder(bt-rchild,?visit);??????????visit(bt-data);??????}??}??二叉树的递归算法较简单,代码简洁清晰,但递归算法效率低,执行速度慢,在下一节将说到二叉树非递归遍历算法。求二叉树的深度int?get_tree_depth(bitree?bt)??{??????int?ldepth,?rdepth;????????if?(!bt)??????????return?0;??????else?if?(!bt-lchild??!bt-rchild)??????????return?1;??????else?{??????????ldepth?=?get_tree_depth(bt-lchild);??????????rdepth?=?get_tree_depth(bt-rchild);????????????return?(ldepth??rdepth???ldepth?:?rdepth)?+?1;??????}??}??树的深度即树的结点中最大层次,分别递归求左右子树的深度,较大子树深度为树的深度。求叶子结点数int?get_num_of_leave(bitree?bt)??{??????if?(!bt)??????????return?0;??????else?if?(!bt-lchild??!bt-rchild)??????????return?1;??????else??????????return?(get_num_of_leave(bt-lchild)?+?get_num_of_leave(bt-rchild));??}??递归求左右子树的叶子数,左右子树的叶子结点之和为树的叶子结点数。释放二叉树void?free_bitree(bitree?*bt)??{??????if?(*bt)?{??????????if?((*bt)-lchild)??????????????free_bitree((*bt)-lchild);??????????if?((*bt)-rchild)??????????????free_bitree((*bt)-rchild);??????????????free(*bt);????????????
您可能关注的文档
- PDM技术在机械可靠性设计分析中的应用研究_苏多.pdf
- PL0语言编译器的中间代码生成.docx
- PLM产品数据管理之严格的标准化和知识管理.pdf
- PON ON BOSA查找表制作方法.docx
- PICC及输液港的护理.ppt
- powerpoint 超链接 课件.ppt
- PPT素材-中国地图.ppt
- QJR-400、315、200说明书.doc
- Qt 第 2 章.ppt
- RG-S2600G-I系列安全智能接入交换机产品介绍 (V1.71).doc
- 英语人教PEP版八年级(上册)Unit4+writing+写作.pptx
- 人美版美术四年级(上册)8 笔的世界 课件 (1).pptx
- 人美版美术七年级(上册)龙的制作.pptx
- 英语人教PEP版六年级(上册)Unit 2 第一课时.pptx
- 数学苏教版三年级(上册)3.3 长方形和正方形周长的计算 苏教版(共12张PPT).pptx
- 音乐人教版八年级(上册)青春舞曲 课件2.pptx
- 音乐人教版四年级(上册) 第一单元 音乐知识 附点四分音符|人教版.pptx
- 英语人教PEP版四年级(上册)Unit 6 Part B let's learn 1.pptx
- 道德与法治人教版二年级(上册)课件-3.11大家排好队部编版(共18张PPT).pptx
- 人美版美术七年级(上册)《黄山天下奇》课件1.pptx
最近下载
- 半立体构成-课件.pptx VIP
- 第二讲旧石器时代考古第一部分基础知识_2128.pptx
- What makes a bad presentation国际交流国际交流英文演讲与辩论英文演讲与辩论.pdf
- B消毒与灭菌.ppt VIP
- PE管冬季施工方案完整.doc
- 2024年云南红河州州属事业单位考试调动工作人员78人公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版.docx VIP
- 太极八法五步教案(16学时版).docx
- F钢琴谱简易版我爱你中国.pdf
- 历年(2019-2024)全国高考数学真题分类(解三角形大题)汇编(附答案).pdf
- 2.1网络改变世界 课件-2024-2025学年道德与法治八年级上册(统编版2024).pptx VIP
文档评论(0)