- 1、本文档共88页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构树的概念与二叉树
4.1 树的基本概念 树是一种非常重要的非线性数据结构,可用来描述客观世界中中广泛存在的具有分支或层次关系的对象。 1. 树的定义(递归版) 定义4.1: 一棵树(或树形)是一个有限非空的结点集合T,其中: 有一个被称为根的结点,记为root(T) ; 其余结点被分成m ? 0 个不相交的集合T1,T2,…,Tm,且T1,T2,…,Tm又都是树。 树T1,T2,…,Tm称作root(T)的子树,每一棵子树的根都和root(T)有一条边连接。 定义4.2 (非递归版) 树是包含n ( n ≥ 1 )个结点有限集合,满足如下条件: 存在一个唯一的结点v0,没有前驱结点,称为树的根(或根结点); 任一非根结点都有且仅有一个前驱结点,称为该结点的父结点;(任何结点都可能有零或多个后继结点,称之为该结点的子结点) 任一非根结点vk都有且仅有一条从v0到该结点的路径:v0 ? v1 ?…? vk,其中vi是vi?1(1 ? i ? k)的子结点。 2. 树的相关术语 度 一个结点的子结点的数目,称为该结点的度。一棵树的度为maxi=1,…, n D (i),其中n为树中结点总数,i指树中的第i个结点,D(i)表结点i的度。 叶结点、分支结点 度为0的结点被称为叶结点;度大于0的结点被称为分支结点。 结点的层数 ⑴ root(T)层数为零; ⑵ 其余结点的层数为其前驱结点的层数加 1; 树的高度 树的高度是指树中结点的最大层数,即maxi=1,…, n NL (i),其中n为树中结点总数,i指树中第i个结点,NL(i)之值为结点i的层数。 路径 若树T中存在结点序列v1 ? v2 ? … ? vk,满足(vi , vi+1 )是树的边,则称此结点序列为v1到vk的路径。路径所经历的边数被称为路径长度。 子孙结点、祖先结点、兄弟结点 一棵树中若存在结点vm到vn的路径,则称vn为vm的子孙结点,vm为vn的祖先结点。同一个父亲的诸子结点称为兄弟结点。 树作为无向图的性质 有n-1条边; 连通 无环 树的等价定义 连通无环图(自由树或无根树,没有确定根,选定一顶点作根,则成为一棵通常的树) n-1 条边的连通图(归纳、必有度为1的点) n-1 条边的无环图(归纳、每个连通分支) 3、树在计算机领域有广泛的应用 操作系统中,文件及文件夹的存储,软件的菜单等都是树; 在分析算法时,可用树来描述其执行过程,如递归调用、搜索等; …… 4.2 二叉树 定义4.3:二叉树是结点的有限集合,它或者是空集,或者由一个根及左、右两个不相交的的二叉树构成。这两棵子树分别称为左、右子树。 树与二叉树的主要区别 二叉树每个结点最多有 2 个子结点,树则无此限制; 二叉树中结点的子树分成左子树和右子树,即使某结点只有一棵子树,也要指明该子树是左子树,还是右子树,即二叉树是有序的; 树决不能为空(换言之树不能为空集),它至少有一个结点,而一棵二叉树可以是空的(或者说二叉树可以为空集)。 引理4.1 二叉树中层数为i的结点至多有2i个,i ≥ 0。 引理4.2 高度为k的二叉树中至多有2k+1-1 (k ≥ 0)个结点。 引理4.3 设T是由n个结点构成的二叉树,其中叶子结点个数为n0,度为2的结点个数为n2,则有:n0=n2+1 证明:设度为1的结点有n1个,总结点个数为n,总边数为e,则: n=n0+n1+n2 (1) e=n-1 (2) e=2n2+n1 (3) 因此,有n0+n1+n2-1=2n2+n1 n0=n2+1 证毕。 满二叉树 定义4.4 一棵非空高度为k( k ? 0)的满二叉树,是有2k+1?1个结点的二叉树。 满二叉树的特点 ① 叶结点都在第k层上; ② 每个分支结点都有两个子结点; ③ 叶结点的个数等于非叶结点个数加1 完全二叉树 定义4.5 一棵包含n个结点高为k的二叉树T,当按层次顺序编号T的所有结点,对应于一棵高为k的满二叉树中编号由1至n的那些结点时,T被称为完全二叉树。 完全二叉树的特点 树中叶结点只能在层数最大的两层上出现;树中最下一层的结点都集中在该层最左边的若干位置上; 仅仅编号最大的分支结点可以没有右孩子,其余分支结点都有两个孩子; 引理4.4 若将一颗具有n个结点的完全二叉树按层次次序从1开始编号,则对编号为i (1?i? n)的结点有: 若i≠1,则编号为i的结点的父结点的编号为 ? i/2 ? 。 若2i?n,则编号为i的结点的左孩子的编号为 2i,否则 i 无左孩子。 若2i+1?n,则i结点的右孩子结点编号
文档评论(0)