- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Data Mining: Concepts and Techniques 数据结构:二叉树Data Structure 主讲教师:骆嘉伟 Office number:软件院503 E-mail: luojiawei@hnu.edu.cn 二叉树 5.1 定义及主要特性 5.2 周游二叉树 5.3 二叉树的实现 5.4 二叉查找树 5.5 堆与优先队列 5.6 huffman编码树 二叉树定义及主要特性 递归定义: 二叉树由结点的有限集合组成,这个集合或者为空,或者由一个根结点及两棵不相交的,分别称作这个根的左子树和右子树的二叉树组成。 特点: 每个结点至多有二棵子树。 二叉树的子树有左、右之分,且其次序不能任意颠倒。 基本形态 二叉树的相关术语 从一个结点到它的两个子结点都有边 edge 相连,这个结点称为它的子结点的父结点 parent 。 如果一棵树的一串结点n1, n2, … , nk有如下关系: 结点ni是ni+1的父结点 1≤i k , 就把n1, n2, … , nk称为一条由n1至nk的路径 path 。这条路经的长度 length 是k-1 因为k个结点是用k-1条边连接起来的 。如果有一条路径从结点R至结点M, 那么R就称为M的祖先 ancestor , 而M称为R的子孙 descendant 。 二叉树的相关术语 结点M的深度 depth 就是从根结点到M的路径的长度。树的高度 height 等于最深的结点的深度+1。任何深度为d的结点的层数 level 都为d。根结点深度为0,层数也为0。 没有非空子树的结点称为叶结点 leaf 或终端结点。至少有一个非空子树的结点称为分支结点或内部结点 internal node 。 二叉树的相关术语 满二叉树 如果一颗二叉树的任何结点,或者是树叶,或者恰有两个非空子女的分支结点,则此二叉树称为满二叉树。 二叉树的相关术语 完全二叉树 若一颗二叉树最多只有最下面的两层结点度数可以小于2,并且最下面一层的结点都集中在该层最左边的若干位置上,则称此二叉树为完全二叉树。 自根结点起每一层从左至右地填充。一棵高度为d的完全二叉除了d-1层外,每一层都是满的。底层叶结点集中在左边的若干位置上。 完全二叉树 二叉树性质 1. 满二叉树定理:非空满二叉树树叶数等于其分支结点数加1。 证明:设二叉树结点数为n,叶结点数为m,分支结点数为b。 有n(总结点数 m(叶 +b(分支) 1 ∵每个分支,恰有两个子结点(满),故有2*b条边一颗二叉树,除根结点外,每个结点都恰有一条边联接父结点,故共有n-1条边。即n-1 2*b 2 ∴由 1 2 得n-1 m+b-1 2*b, 得出m 叶 b(分支)+ 1 二叉树性质 2、满二叉树定理的推论: 一棵非空二叉树空子树的数目等于其结点数目加1。 证明1:设二叉树T,将其所有空子树换成叶结点,把新的二叉树记为T‘。所有原来树T的结点现在是树T’的分支结点。 根据满二叉树定理,新添加的叶结点数目等于树T的结点数目加1, 而每个新添加的叶结点对应树T的一棵空子树,因此树T中空子树的数目等于树T中结点数目加1。 二叉树性质 证明2:根据定义,二叉树T中每个结点都有两个子结点指针(空或非空)。 因此一个有n个结点的二叉树有2n个子结点指针。 除根结点外,共有n-1个结点,它们都是由其父结点中相应指针指引而来的,换句话说就有n-1个非空子结点指针。 既然子结点指针数为2n,则其中有n+1个为空 指针 。 二叉树性质 3. 任何一颗二叉树,度为0的结点比度为2的结点多一个。 证明:设有n个结点的二叉树的度为0、1、2的结点数分别为 n0,n1,n2,n n0 +n1 +n2 公式1 设边数为e。因为除根以外,每个结点都有一条边进入,故n e+1。 由于这些边是有度为1和2的结点射出的,因此e n1+ 2*n2,于是n e+1 n1 +2*n2 +1(公式2) 因此由公式(1)(2)得 n0+n1+n2 n1+2*n2+1 即n0 n2 +1 二叉树性质 4.二叉树的第i层(根为第0层)最多有2i个结点 5.高度为k 深度为k-1。只有一个根结点的二叉树的高度为1,深度为0 的二叉树至多有2k-1个结点 6. 有n个结点的完全二叉树的高度为log2 n+1 深度为log2n 二叉树的抽象数据类型 template class BinNode public: virtual BinNode* left const 0; virtual BinNode* right const 0; virtual Elem val
文档评论(0)