恋上数据结构与算法:二叉树的介绍(十一)

文章目录

(一)树形结构
(二)树(Tree)的概念01
(三)树(Tree)的概念02
(四)树(Tree)的概念03
(五)二叉树(Binary Tree)的概念
(六)二叉树(Binary Tree)的性质
(七)真二叉树(Proper Binary Tree)的介绍
(八)满二叉树(Full Binary Tree)的介绍
(九)完全二叉树(Complete Binary Tree)的概念
(十)完全二叉树(Complete Binary Tree)的性质01
(十一)完全二叉树(Complete Binary Tree)的性质02
(十二)完全二叉树(Complete Binary Tree)的面试题
(十三)国外教材的说法

(一)树形结构

数据结构中的树就像是一颗倒挂的树,如下:
恋上数据结构与算法:二叉树的介绍(十一)_第1张图片
生活中很多地方都用到树形结构的概念,如下:
恋上数据结构与算法:二叉树的介绍(十一)_第2张图片

(二)树(Tree)的概念01

恋上数据结构与算法:二叉树的介绍(十一)_第3张图片
说明:

  1. 下面红色圈圈圈出来的5棵树,都是权值为1的节点(以下都简称x号节点)的子树
    恋上数据结构与算法:二叉树的介绍(十一)_第4张图片
  2. 下面红色圈圈圈出来的分别是3号节点左子树右子树
    又比如:51号节点52号节点分别是5号节点左子树右子树
    左右子树都是相对而言的
    恋上数据结构与算法:二叉树的介绍(十一)_第5张图片
  3. 节点的度子树的个数,比如:1号节点是5,2号节点是2
    恋上数据结构与算法:二叉树的介绍(十一)_第6张图片
  4. 树的度是所有节点中的最大值,该树的度是5
  5. 叶子节点度为0的节点,比如:21、31、51、52、61等等

(三)树(Tree)的概念02

恋上数据结构与算法:二叉树的介绍(十一)_第7张图片
说明:

  1. 节点的深度是指从根节点到当前节点的唯一路径上的节点总数,比如31号节点的深度就是3
    恋上数据结构与算法:二叉树的介绍(十一)_第8张图片
  2. 节点的高度是指从当前节点到最远叶子节点路径上的节点总数,比如说2号节点的高度不是1(21号子节点不是最远的),而是3(221、222和223都行)
    恋上数据结构与算法:二叉树的介绍(十一)_第9张图片
  3. 树的深度是指所有节点深度中的最大值,该树的深度是4
  4. 树的高度是指所有节点高度中的最大值,该树的高度是4
    注意:数据结构的树是一颗倒挂的树,我们只需要在把它倒过来,就可以理解深度高度
  5. 一般来说,树的深度等于树的高度

(四)树(Tree)的概念03

恋上数据结构与算法:二叉树的介绍(十一)_第10张图片
说明:有序树是指任意子节点之间是有顺序关系的,比如从左到右递增
恋上数据结构与算法:二叉树的介绍(十一)_第11张图片

(五)二叉树(Binary Tree)的概念

恋上数据结构与算法:二叉树的介绍(十一)_第12张图片
说明:

  1. 即使某节点只有一颗子树,也要区分左右子树,比如96号节点87号节点右子树
  2. 只有一个节点的二叉树,那个节点即使根节点,也是叶子节点,如11号节点

(六)二叉树(Binary Tree)的性质

恋上数据结构与算法:二叉树的介绍(十一)_第13张图片
说明

  1. 二叉树的叶子节点的为0,所以 总节点数=度为0的节点数+度为1的节点数+度为2的节点数
  2. 二叉树的边数如下:
    恋上数据结构与算法:二叉树的介绍(十一)_第14张图片
  3. 二叉树的边数等于,所以 T=n1+2*n2
    恋上数据结构与算法:二叉树的介绍(十一)_第15张图片
  4. 每一个节点的头上都有一条边,唯独根节点的头上没有边,所以 T=n-1
    恋上数据结构与算法:二叉树的介绍(十一)_第16张图片

(七)真二叉树(Proper Binary Tree)的介绍

恋上数据结构与算法:二叉树的介绍(十一)_第17张图片

(八)满二叉树(Full Binary Tree)的介绍

恋上数据结构与算法:二叉树的介绍(十一)_第18张图片
说明

  1. 同样高度的二叉树中,满二叉树的叶子节点数量最多、总节点数量最多
    比如下面这颗同高度的二叉树,就像缺斤少两一样
    恋上数据结构与算法:二叉树的介绍(十一)_第19张图片
  2. 满二叉树一定是真二叉树,真二叉树不一定是满二叉树

(九)完全二叉树(Complete Binary Tree)的概念

恋上数据结构与算法:二叉树的介绍(十一)_第20张图片
说明

  1. 完全二叉树从根结点倒数第 2 层是一棵满二叉树
  2. 满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树
  3. 排列的规则如下:
    恋上数据结构与算法:二叉树的介绍(十一)_第21张图片
  4. 下面这颗二叉树不是完全二叉树
    恋上数据结构与算法:二叉树的介绍(十一)_第22张图片

(十)完全二叉树(Complete Binary Tree)的性质01

恋上数据结构与算法:二叉树的介绍(十一)_第23张图片
注意:因为h肯定是整数,假设log2n取4.2,由 h-1 <= log2n < h得 h=5
恋上数据结构与算法:二叉树的介绍(十一)_第24张图片
注意:java的int自带floor功能,比如 int a = 5/2;,a=2

(十一)完全二叉树(Complete Binary Tree)的性质02

  • 1开始编号的情况
    恋上数据结构与算法:二叉树的介绍(十一)_第25张图片
  • 0开始编号的情况
    恋上数据结构与算法:二叉树的介绍(十一)_第26张图片

(十二)完全二叉树(Complete Binary Tree)的面试题

恋上数据结构与算法:二叉树的介绍(十一)_第27张图片
分析如下:
恋上数据结构与算法:二叉树的介绍(十一)_第28张图片
最终的数学公式:n0 = floor(n/2 + 1/2)n0 = floor((n+1)/2)
实际编程的公式:n0 = (n+1) >> 1(int自带floor功能)

其实向下取整(floor)和向上取整(ceiling)是可以互相转换
在这里插入图片描述

(十三)国外教材的说法

恋上数据结构与算法:二叉树的介绍(十一)_第29张图片

你可能感兴趣的:(恋上数据结构与算法:第一季)