文章目录

  • 二叉树性质1
  • 二叉树性质2
  • 二叉树性质3
  • 二叉树性质4
  • 二叉树性质5

二叉树性质1

性质1:在二叉树的第i层上至多有2i-1个结点(i>=1)。
如图1-1的二叉树。
第一层的结点是根结点,只有一个,所以21-1 = 20=1。
第二层有两个结点,所以22-1 = 21=2。
第三层有四个结点,所以23-1 = 22=4。
第四层有八个结点,所以24-1 = 23=8。

图1-1
通过数据归纳法的论证,可以很容易得出在二叉树的第i层上至多有2 i-1(i>=1)个结点的论证。

二叉树性质2

性质2:深度为k的二叉树至多有2k-1个结点(k>=1)。
这里一点要看清楚,是2k后在减去1。
深度为k的意思就是说有k层的二叉树。
如果有一层,至多有1=20-1个结点。
如果有二层,至多有1+2=3=22-1个结点。
如果有三层,至多有1+2+4=7=23-1个结点。
通过数据归纳法的论证,可以得出,如果有k层,此二叉树至多有2k-1个结点。

二叉树性质3

性质3:对于任何一颗二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1。
终端结点数就是叶子结点数,除了叶子结点外,剩下的就是度为1或2的结点数了,我们设n1为度是1的结点数。则树T的结点总数n=n0+n1+n2
如下图1-2的例子,结点数为10,他是由A,B,C,D等度为2结点,F,G,H,I,J等度为0的叶子结点和E这个度为1的结点组成。总和为4+1+5=10。

图1-2
我们换个角度,在数一数它的连接线数,由于根结点只有分出去,没有分支进入,所以分支线总数为结点总数在减去1,。图1-2就是有9个分支。对于A,B,C,D结点来说,他们都有两个分支线出去,而E结点只有一个分支线出去,所以总分支线为4 * 2 + 1*1=9。
用代数表达就是分支总数=n-1=n 1+2n 2。因为刚才我们有等式n=n 0+n 1+n 2,所以可以推导出n 0+n 1+n 2-1=n 1+2n 2

二叉树性质4

性质4:具有n个节点的完全二叉树深为log2x+1(其中x表示不大于n的最大整数)。
由满二叉树的定义我们可以知道,深度为k的满二叉树的结点数n一定是2k-1。因此这是最多的结点个数。那么对于n=2k-1推导得出满二叉树的度为k=log2(n+1),比如结点数为15的满二叉树,度为4。
完全二叉树,是一颗具有n个结点的二叉树,按层序编号后其编号后其编号与同样深度的满二叉树中编号结点在二叉树中位置完全相同,那它就是完全二叉树,也就是说,它的叶子结点只会出现在最下面的两层。
它的结点数一定少于等于同样度数的满二叉树的结点数2k-1,但是一定多于2k-1-1。即满足2k-1-1<n<=2k-1。由于结点数n是正整数,n<=2k-1意味着n<2k,n>2k-1-1,意味着n>=2k-1,所以2k-1<=n<2k,不等式两边取对数,得到k-1=<log2n<k,而k作为度数也是整数,因此k=[log2n]+1。

二叉树性质5

性质5:如果对一颗有n个结点的完全二叉树(其深度为[log2n]+1)的结点按层序编号(从第一层到[log2n]+1层,每层从左到右),对任一结点i(1<=i<=n):
(1)如果i=1,则结点i是二叉树的根,无双亲,如果i>1,则其双亲结点是结点[i/2]
(2)如果2i>n,则结点i无左孩子(结点i为叶子结点)否则左孩子是结点2i。
(3)如果2i+1>n,则结点i无右孩子,否则其右孩子是结点2i+1.

【数据结构】之二叉树的5个性质相关推荐

  1. 数据结构之二叉树的定义和性质

    通过上一节讲解,我们知道通用树结构是采用双亲孩子表示法模型建立的.每个结点都有一个指向其双亲的指针,每个结点都有 若干个指向其孩子的指针.如下图: 整体实现起来比较复杂,今天我们来讲一下另一种树结构模 ...

  2. 数据结构之树和二叉树的定义和性质

    树和二叉树的定义和性质 树 思维导图: 树的基本定义: 树的基本术语: 树的性质: 二叉树: 二叉树的定义: 二叉树的5中形态: 二叉树的几种特殊形态: 满二叉树: 完全二叉树: 二叉排序树: 平衡二 ...

  3. 【数据结构笔记09】二叉树的定义、性质、实现

    本次笔记内容: 3.2.1 二叉树的定义及性质 3.2.2 二叉树的存储结构 文章目录 二叉树的定义及性质 二叉树的定义 二叉树的重要性质 二叉树的抽象数据类型定义 二叉树的存储结构 完全二叉树用数组 ...

  4. 【关于封装的那些事】 缺失封装 【关于封装的那些事】 泄露的封装 【关于封装的那些事】 不充分的封装 【图解数据结构】二叉查找树 【图解数据结构】 二叉树遍历...

    [关于封装的那些事] 缺失封装 目录 - 缺失封装 为什么不能缺失封装? 缺失封装潜在的原因 未意识到关注点会不断变化 混合关注点 幼稚的设计决策 示例分析一 示例分析二 总结 缺失封装 没有将实现变 ...

  5. 二叉树的定义、性质、存储

    二叉树的定义 二叉树是每个节点最多有两个子树的树结构.通常子树被称作"左子树"(left subtree)和"右子树"(right subtree).二叉树常被 ...

  6. python处理mysql数据结构_python环境下使用mysql数据及数据结构和二叉树算法(图)...

    python环境下使用mysql数据及数据结构和二叉树算法(图): 1 python环境下使用mysql 2使用的是 pymysql库 3 开始-->创建connection-->获取cu ...

  7. 由任意二叉树的前序遍历序列和中序遍历序列求二叉树的思想方法_算法与数据结构基础 - 二叉树(Binary Tree)...

    二叉树基础 满足这样性质的树称为二叉树:空树或节点最多有两个子树,称为左子树.右子树, 左右子树节点同样最多有两个子树. 二叉树是递归定义的,因而常用递归/DFS的思想处理二叉树相关问题,例如Leet ...

  8. 初阶数据结构 初识二叉树

    初阶数据结构 初识二叉树 一. 树 1. 基本概念 2. 常用术语 3. 代码表示 4. 实际运用 二. 二叉树 1. 基本概念 2. 特殊的二叉树 3. .二叉树的顺序结构及实现 (1)顺序结构 ( ...

  9. python实现mysql二叉树_python环境下使用mysql数据及数据结构和二叉树算法(图)...

    python环境下使用mysql数据及数据结构和二叉树算法(图): 1 python环境下使用mysql 2使用的是 pymysql库 3 开始-->创建connection-->获取cu ...

  10. C语言数据结构之二叉树的层次建树及遍历方法(前序,中序,后序,层次遍历)

    C语言数据结构之二叉树的层次建树及遍历方法(前序,中序,后序,层次遍历) tips:前些天学习了C语言数据结构链表,栈,队列.今天来学习一下C语言数据结构之二叉树的各种操作. 注意:二叉树的层次建树是 ...

最新文章

  1. 如何最好一个管理者?
  2. 总结—elasticsearch启动失败的几种情况及解决
  3. (2014年2月7日升级)Ubuntu-14.04-Alpha2-32位简体中文优化封装版
  4. 2020-12-08 tensorflow model.fit_generator()函数参数
  5. Python公众号开发部分代码开源
  6. php循环输出url,PHP 输出URL的快捷方式的实现方法
  7. python 执行js打开链接_使用Python在链接的href中执行JavaScript
  8. SD卡, EMMC固化 ,关于bootloader linux
  9. Windows Mobile 6.0 (1)
  10. Dropout浅层理解
  11. php拍照虚线上传图片,照片怎么添加白色虚线 给照片上的人物周围添加虚线描边效果|照片处理工具...
  12. Vue 动态加载子组件
  13. vue3.0中使用百度离线地图
  14. chrome浏览器inspect打不开解决方案
  15. 基于深度学习的Image Inpainting (图像修复)论文整理与概述
  16. Detecting Novel Associations in Large Data Sets(检测 大型数据集中的信息关联性,数据相关性)
  17. 优秀课程案例:使用Scratch制作打弹球游戏1-反弹球
  18. 电脑pc页面在手机缩放显示
  19. 解答:C语言中结构体的定义中,后面跟的“结构体变量”到底是什么?
  20. Windows下在VS-Code将本地图片加载至资源文件【可使用】

热门文章

  1. iOS 推送要点整合
  2. Python脚本之操作Redis Cluster
  3. 痞子衡嵌入式:揭秘i.MXRT1060,1010上串行NOR Flash冗余程序启动设计
  4. jquery 定时器控制
  5. TF31002问题解决办法
  6. Deep Forest
  7. python 比较两个json文件
  8. QPlayer2-资源网各大程序背景音乐插件
  9. js中的4种循环方式
  10. CDN服务商和服务域名