zoukankan      html  css  js  c++  java
  • 二叉搜索树、平衡二叉树、红黑树

    一、二叉搜索树特点

      对于树中的每个节点X,它的左子树中所有关键字的值小于X的关键字值,而它的右子树中所有关键字值都大于X的关键字值

    根据这个特性,对一个二叉树进行中序遍历,如果时单调递增的,则可以说明这个数二叉搜索树

    重点操作有插入、删除

    插入:

    1、从根节点开始,遇键值较大则向左走,与键值较小则向右走,直至尾部,即插入点

    删除:

    1、如果存在于叶子节点,直接删除即可

    2、删除的节点只有一个子节点,则将子节点连至父节点的即可(可以视为将子节点替换掉删除节点的位置)

    3、删除的节点有两个子节点,这时需将右子树的最小值替换掉删除节点即可,最小节点可通过删除节点右子树一直向左走到底获得,

    二、平衡二叉搜索树

    发生的情况:当对二叉树进行插入或者删除的时候,有可能造成二叉搜索树失去平衡,造成搜寻效率低落的情况。

    插入:

    当向二叉搜索树插入一个节点分为ie四种情况

    1、插入节点位于X的左子节点的左子树--左左

    2、插入节点位于X的左子节点的右子树--左右

    3、插入节点位于X的右子节点的左子树--右左

    4、插入节点位于X的右子节点的右子树--右右

    情况1、4彼此对称,称为外侧插入,采用单旋转操作即可调整

    情况2、3彼此对成,称为内侧插入,可以采用双旋转(执行两次单旋转)操作调整

    三、红黑树

    红黑树不仅时一个二叉搜索树,还必须满足以下规则

    1、每个节点不是红色就是黑色

    2、根节点一定为黑色

    3、如果节点三红色,则子节点必须为黑色

    4、任一节点至NULL(树尾端)的任何路径,所含之黑节点树必须相同。

  • 相关阅读:
    freemarker的${!}
    什么是分布式消息中间件?
    Webservice工作原理及实例
    Nginx的一些基本功能
    dubbo与zookeeper的关系
    为什么推荐Zookeeper作注册中心
    ORACLE和MYSQL的简单区别
    SQL优化|Java面试题
    玩转 lua in Redis
    解决KafKa数据存储与顺序一致性保证
  • 原文地址:https://www.cnblogs.com/socks/p/12768003.html
Copyright © 2011-2022 走看看