博客
关于我
B树,B+树,树,二叉树,满二叉树,完全二叉树,二叉搜索树,平衡二叉树,
阅读量:623 次
发布时间:2019-03-13

本文共 1284 字,大约阅读时间需要 4 分钟。

树(Tree)

树是一种数据结构,包含n(n≥0)个结点的有限集,具有以下特点:

  • 每个元素称为结点(Node)。
  • 有一个特定的结点被称为根结点(Root)。
  • 除根结点外的其他元素被分为m(m≥0)个互不相交的集合,每个集合本身也是一棵树,被称为子树(Subtree)。
  • 树可以看作是层次化的结构,根结点在最上一层,其子节点占据下一层,依此类推。每个结点可以有任意多个子节点,但只能有一个父节点。


    树的度(Degree)

    度被定义为两种方式:

  • 节点的度:每个结点拥有的子树数或后继结点数。
  • 树的度:树中所有结点的度的最大值。
  • 例如,图中结点C的度为3,结点B的度为2,整棵树的度为3。


    树的基本概念

  • 分支节点(Internal Node)叶子节点(Leaf Node)

    • 分支节点度大于0。
    • 叶子节点度为0。
  • 孩子节点(Child Node)双亲结点(Parent Node)

    • 子节点由父节点和父节点的子树根决定。
    • 兄弟节点由同一父节点的多个子节点构成。
  • 层数和树的深度(Depth)

    • 树的深度是指从根节点到最深叶子节点的层数。
  • 有序树(Ordered Tree)无序树(Unordered Tree)

    • 有序树的子树按一定顺序排列,结构如图所示。

  • 二叉树(Binary Tree)

    二叉树是树的扩展,定义为:

    • 包含n(n≥0)个结点的有限集合。
    • 由一个根节点和两棵互不相交的左子树和右子树构成。

    二叉树的特点

  • 每个节点最多有两个子树。
  • 二叉树是有序的。
  • 二叉树的种类

  • 满二叉树(Full Binary Tree)

    • 所有节点都有两个子树,叶子节点集中在同一层。
  • 完全二叉树(Complete Binary Tree)

    • 满足满二叉树的条件但结构不一定相同。
  • 平衡二叉树(AVL Tree)

    • 高度平衡,任何根节点的左子树和右子树高度差不超过1。
  • 红黑树(Red-Black Tree)

    • 自平衡二叉查找树,通过颜色属性(红色或黑色)实现平衡。

  • B树(B-Tree)

    B树是多路平衡查找树,用于存储和检索数据,支持O(log n)时间复杂度的查找、插入和删除。

    B树的定义(m阶B树)

  • 每个结点至多有m个子树。
  • 非叶节点至少有两个子树。
  • 非根节点至少有ceil(m/2)个子树。
  • 叶子节点位于同一层,结构如图所示。
  • B树的优势

    • 高效分页,减少磁盘I/O操作。
    • 适合存储大量数据,如数据库和文件系统。

    B+树(B+ Tree)

    B+树是B树的变体,用于范围查询,特点:

    • 非叶节点不存储值,只存储索引。
    • 叶子节点通过链连接,支持批量读取。

    B+树与B树的区别

  • B+树内部节点不存储值,唯一叶子节点处保留一部分值。
  • 树的高度更矮,更适合范围查询。
  • B+树的优势

    • 缺少磁盘I/O次数。
    • 适合范围查询和全序遍历。

    数据库中的选择

    • B+树在数据库中广泛应用,因为其支持快速范围查询和全数据遍历。
    • B树适合随机访问和插入操作。

    总结

    树数据结构为计算机科学提供了基础框架,二叉树和B/B+树是其重要的扩展,广泛应用于数据库和文件系统中。理解这些结构是掌握数据管理基础的关键。

    转载地址:http://lhiaz.baihongyu.com/

    你可能感兴趣的文章
    NIO蔚来 面试——IP地址你了解多少?
    查看>>
    NISP一级,NISP二级报考说明,零基础入门到精通,收藏这篇就够了
    查看>>
    NISP国家信息安全水平考试,收藏这一篇就够了
    查看>>
    NIS服务器的配置过程
    查看>>
    Nitrux 3.8 发布!性能全面提升,带来非凡体验
    查看>>
    NiuShop开源商城系统 SQL注入漏洞复现
    查看>>
    NI笔试——大数加法
    查看>>
    NLog 自定义字段 写入 oracle
    查看>>
    NLog类库使用探索——详解配置
    查看>>
    NLP 基于kashgari和BERT实现中文命名实体识别(NER)
    查看>>
    NLP 模型中的偏差和公平性检测
    查看>>
    Vue3.0 性能提升主要是通过哪几方面体现的?
    查看>>
    NLP 项目:维基百科文章爬虫和分类【01】 - 语料库阅读器
    查看>>
    NLP_什么是统计语言模型_条件概率的链式法则_n元统计语言模型_马尔科夫链_数据稀疏(出现了词库中没有的词)_统计语言模型的平滑策略---人工智能工作笔记0035
    查看>>
    NLP三大特征抽取器:CNN、RNN与Transformer全面解析
    查看>>
    NLP学习笔记:使用 Python 进行NLTK
    查看>>
    NLP度量指标BELU真的完美么?
    查看>>
    NLP的不同研究领域和最新发展的概述
    查看>>
    NLP的神经网络训练的新模式
    查看>>
    NLP采用Bert进行简单文本情感分类
    查看>>