zoukankan      html  css  js  c++  java
  • 一些树的数据结构

    (原创)

    本文讨论一些树的数据结构:

    二叉查找树binary search tree:根节点大于等于左树,小于等于右树。

    k-ary 树:孩子至多k个

    AVL树:对每一个节点,平衡因子(右树高度-左树高度)为0,1,或-1

    B树:二叉查找树的拓展,一个节点可多于2个孩子,由keys分割多个子树,并符合大小关系,如两个key的节点 k1,k2,孩子1小于k1,孩子2介于k1和k2,孩子3大于k2。例子:2-3B树(简称2-3树),他有2个孩子(根一个数据),或3个孩子(根两个数据)。

    2-3-4树:2个或3个或4个孩子

    B+树:类B树,但除底层叶子外的节点都只含key仅做索引用,并且这些叶子组成一个链表。

    红黑树

    红黑树是一种自平衡二叉查找树(self-balancing binary search tree),额外还有性质:

    (1)每个节点红或黑

    (2)root是黑,叶子NIL是黑

    (3)红节点的孩子皆黑

    (4)节点到它的叶子的路径包含同样数目的黑节点

    插入节点时,有三种情况需要调整(这是在左树情况下,右树相应镜像操作)

    case1:父叔节点都红,父叔变红,祖父变黑

    case2:父红叔黑,且自身为右孩子,左旋一下到case3

    case3:父红叔黑,且自身为左孩子,右旋一下,且之后父和兄弟变色

  • 相关阅读:
    Mapjoin和Reducejoin案例
    自定义InputFormat和OutputFormat案例
    shullfe机制详解
    辅助排序和Mapreduce整体流程
    Mapreduce的排序(全局排序、分区加排序、Combiner优化)
    Mapreduce中maptask过程详解
    Mapreduce的序列化和流量统计程序开发
    SpringCloud-熔断器
    Mybatis 之$与#
    限流算法
  • 原文地址:https://www.cnblogs.com/randomstring/p/15707338.html
Copyright © 2011-2022 走看看