- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[2018年最新整理]二叉树讲解模板
1.树的基本概念 2.二叉树的基本概念 3.二叉树的存储结构 4.二叉树的基本运算及其实现 5.二叉树的遍历 6.二叉树的构造 7.线索二叉树 8.哈弗曼树 一.树的基本概念 树的定义 树:n(n=0)个结点的有限集合。当n=0时,称为空树;任意一棵非空树满足以 下条件: 1.有且仅有一个特定的称为根的结点; 2.当n1时,除根节点之外的其余结点被分成m(m0)个互不相交的有限集合T1,T2,……Tm,其中每个集合又是一棵树,并称为这个根结点的子树。 树的逻辑表示方法 树的基本术语 1.节点的度与树的度 2.分支节点和叶子节点 3.路径和路径长度 4.孩子结点、双亲节点、兄弟节点 5.节点的层次和树的高度 6.有序树和无序树 7.森林 树的性质 性质1.树中的节点数等于所有节点的度数加1 性质2.度为m的树中第i层上至多有m^(i-1)个节点(i=1) 性质3.高度为h的m次树至多有[(m^h)-1]/(m-1)个节点 树的存储结构 1.双亲存储结构 2.孩子链存储结构 3.孩子兄弟链存储结构 二.二叉树的基本概念 定义:结点的一个有限集合,该集合或为空,或是由一个根结点及两棵树分别称为左子树和右子树的互不相交的二叉树组成。 特点:每个结点最多两个孩子,并且子树有左右之分。 基本性质: 1.非空二叉树的第i层上最多有2^(i-1)(i=1)个结点; 2.深度为h的二叉树中最多有2^h-1个结点; 3.在任一棵二叉树中,有n0叶子结点,有n2个度为2的结点,则有n0=n2+1。 满二叉树:在一棵二叉树中,所有分支节点都有左孩子节点和右孩子节点,并且叶子节点都集中在二叉树的最下一层。 完全二叉树:二叉树中最多只有最下面两层的节点的度数小于2,并且最下面一层的叶子节点都 依次排列在该层最左边的位置上。 满二叉树:在一棵二叉树中,所有分支节点都有左孩子节点和右孩子节点,并且叶子 节点都集中在二叉树的最下一层。 三.二叉树的存储结构: 顺序存储,就是用一组连续的存储单元存放二叉树中的结点。 链式存储,用链表来表示一棵二叉树,即用链来指示元素的逻辑关系。 data域存放某结点的数据信息;lchild与rchild分别存放指向左孩子和右孩子的指针。 四.二叉树的基本运算及实现 二叉树的基本运算概述 归纳起来,二叉树有以下基本运算,为了方便,假设二叉树均采用二叉链存储结构进行存储,每个节点值为单个字符。 创建二叉树CreateBTNode(*b,*str) 查找节点FindNode(*b,x) 找孩子节点LchildNode(p)和RchildNode(p) 求高度BTNodeDepth(*b) 输出二叉树DispBTNode(*b) 五.二叉树的遍历 二叉树的遍历是指按照一定次序访问二叉树中所有节点,并且每个节点仅访问一次的过程。它是最基本的运算,是二叉树中所有其他运算的基础。 若规定先遍历左子树,后遍历右子树,则对于非空二叉树,可得到如下3中递归的遍历方法: 1.先序遍历 2.中序遍历 3.后序遍历 先序遍历 先序遍历的过程是: (1)访问根节点; (2)先序遍历左子树; (3)先序遍历右子树。 中序遍历 中序遍历二叉树的过程是: (1)中序遍历左子树; (2)访问根节点; (3)中序遍历右子树。 后序遍历 后序遍历二叉树的过程是: (1)后序遍历左子树; (2)后序遍历右子树; (3)访问根节点。 层次遍历 除前面介绍的遍历方法之外,还有一种层次遍历方法,其过程是: 若二叉树非空(假设其高度为h),则: (1)访问根节点(第1层); (2)从左到右访问第2层的所有节点; (3)从左到右访问第3层的所有节点、…、第n层的所有节点。 六、二叉树的构造--两个定理 定理1:任何n(n=0)个不同节点的二叉树,都可由它的中序序列和先序序列唯一确定。 定理2:任何n(n0)个不同节点的二叉树,都可由它的中序序列和后序序列唯一确定。 七、线索二叉树 1、线索二叉树的概念 按照某种遍历方式对二叉树进行遍历,可以把二叉树中所有结点排序为一个线性序列。在改序列中,除第一个结点外每个结点有且仅有一个直接前驱结点;除最后一个结点外每一个结点有且仅有一个直接后继结点。这些指向直接前驱结点和指向直接后续结点的指针被称为线索(Thread),加了线索的二叉树称为线索二叉树。 2、线索化二叉树 线索二叉树结点的结构如下: 3、线索化二叉树算法:结点*pre是结点*p的前驱,而*p是*pre的后继。这样
文档评论(0)