树的数据结构分类

树的数据结构分类

  • 一、树
    • 概念定义
  • 二、二叉树(Binary Tree)
    • 定义
    • 性质
    • 分类
      • 1.1完全二叉树
      • 1.2满二叉树
      • 2.1二叉搜索(查找)树/排序二叉树
      • 2.2平衡二叉树(BBT)
      • 2.3自适应平衡二叉搜索树AVL (Adelson-Velsky-Landis Tree)
      • 2.4红黑树
      • 2.5二叉堆
  • 三、B-Tree/B-树/B树

一、树

树的数据结构分类_第1张图片

概念定义

  • 节点:树的结点包含一个数据元素及若干指向其子树的分支
  • 节点的度:节点拥有的子树数量称为节点的度(Degree)
  • 树的度:是指树内个结点的度的最大值
  • 孩子与双亲:结点的子树的根称为该结点的孩子(Child),相应地,该结点称为孩子的双亲(Parent)
  • 兄弟:同一个双亲的孩子之间互称兄弟(Sibling)
  • 节点的祖先:从根到该结点所经分支上的所有结点
  • 节点的子孙:对应地,以某结点为根的子树中的任一结点都称为该结点的子孙
  • 树的层次(Level):从根开始,根为第一层,根的孩子为第二层等。。。。
  • 树的深度:树中结点的最大层次称为树的深度(Depth)或高度
  • 森林(Forest) 是m(m≥0)棵互不相交的树的集合

二、二叉树(Binary Tree)

定义

它的特点是每个结点至多有两棵子树(即二叉树中不存在度大于2的结点),且二叉树的子树有左右之分,其次序不能任意颠倒(有序树)

性质

  • 性质1)在二叉树的第i层上至多有2i−1个结点(i≥1)。
  • 性质2)深度为k的二叉树至多有2k−1个结点(k≥1)。
  • 性质3)对任何一棵二叉树,如果其叶子节点数为n0,度为2的结点数为n2,则n0=n2+1。

语言定义:

class TreeNode(object):
    def __init__(self,data=None,left=None,right=None):
        self.data = data
        self.left = left
        self.right = right

分类

树的数据结构分类_第2张图片

1.1完全二叉树

在一棵二叉树中,除了最后一层,都是满的,并且最后一层或者是满的,或者是右边缺少连续若干节点,成为完全二叉树
树的数据结构分类_第3张图片
性质

  • 性质4) 具有n个结点的完全二叉树的深度为[log2n]+1,其中[x]表示不大于x的最大整数。
  • 性质5) 如果对一棵有n个结点的完全二叉树的结点按层序编号(从第一层到最后一层,每层从左到右),则对任一结点i(1≤i≤n),有:
    (1) 如果i=1,则结点i是二叉树的根,无双亲;如果i>1,则其双亲结点为[1/2]。
    (2) 如果2i>n,则结点i无左孩子;否则其左孩子是结点2i。
    (3) 如果2i+1>n,则结点i无右孩子;否则其右孩子是结点2i+1。

1.2满二叉树

最后一层也是满的完全二叉树
树的数据结构分类_第4张图片

性质

  • 深度为k的满二叉树,有2k−1个节点

2.1二叉搜索(查找)树/排序二叉树

节点满足左子树所有节点<根节点<右子树所有节点,不存在相等值的节点
树的数据结构分类_第5张图片

2.2平衡二叉树(BBT)

是一种结构平衡的二叉搜索树,即叶子节点深度差不超过1,能够在O(logn)内完成插入、查找和删除操作,结构如图所示,常见的平衡二叉树有AVl树、红黑树等。
树的数据结构分类_第6张图片

2.3自适应平衡二叉搜索树AVL (Adelson-Velsky-Landis Tree)

2.4红黑树

是一种自平衡二叉查找树,又称为“对称二叉B树”,除了满足所有二叉查找树的要求之外还需要满足以下要求:

(1)节点是红色或者是黑色的

(2)根节点是黑色的

(3)每个叶子节点都是黑色的(叶子是NIL节点)

(4)每个红色节点必须有两个黑色节点(从叶子到根节点的所有简单路径上不可能有两个连续的红色节点)

(5)从任一节点到其每个叶子的所有简单路径都饱和相同数目的节点

注:

NIL节点就是空节点,二叉树中庸NIL节点代替NULL
简单路径:指顶点序列中顶点不重复出现的路径

树的数据结构分类_第7张图片

2.5二叉堆

满足:

  1. 完全二叉树
  2. 父节点值>=子节点值:最大堆/大跟堆
    父节点值<=子节点值:最小堆/小根堆
    树的数据结构分类_第8张图片
    树的数据结构分类_第9张图片

用途

  1. 堆排序
  2. Top K问题

三、B-Tree/B-树/B树

B-tree树即B树,B即Balanced,即平衡树,是为了提高查询效率而设计的一种多路平衡搜索树。

详细讲解参考
https://www.cnblogs.com/sunsky303/p/11497448.html

你可能感兴趣的:(算法,数据结构,数据结构,树结构)