博客
关于我
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/

    你可能感兴趣的文章
    Papyrus项目常见问题解决方案
    查看>>
    Parallel.ForEach使用示例
    查看>>
    Parallel.ForEach的基础使用
    查看>>
    parallels desktop for mac安装虚拟机 之parallelsdesktop密钥 以及 parallels desktop安装win10的办公推荐可以提高办公效率...
    查看>>
    parallelStream导致LinkedList遍历时空指针的问题
    查看>>
    Parameter ‘password‘ not found. Available parameters are [md5String, param1, username, param2]
    查看>>
    ParameterizedThreadStart task
    查看>>
    Spring security之管理session
    查看>>
    paramiko模块
    查看>>
    param[:]=param-lr*param.grad/batch_size的理解
    查看>>
    spring mvc excludePathPatterns失效 如何解决spring拦截器失效 excludePathPatterns忽略失效 拦截器失效 spring免验证拦截器不起作用
    查看>>
    Spring Cloud 之注册中心 EurekaServerAutoConfiguration源码分析
    查看>>
    Parrot OS 6.2 重磅发布!推出全新 Docker 容器启动器
    查看>>
    Parrot OS 6.3 发布!全面提升安全性,新增先进工具,带来更高性能
    查看>>
    ParseChat应用源码ios版
    查看>>
    Part 2异常和错误
    查看>>
    Pascal Script
    查看>>
    Spring Boot集成Redis实现keyspace监听 | Spring Cloud 34
    查看>>
    Spring Boot中的自定义事件详解与实战
    查看>>
    Passport 密码模式
    查看>>