zoukankan      html  css  js  c++  java
  • TreeMap读源码总结

    红黑树:

    定义

    A red–black tree is a kind of self-balancing binary search tree in computer science. Each node of the binary tree has an extra bit, 
    and that bit is often interpreted as the color (red or black) of the node.
    These color bits are used to ensure the tree remains approximately balanced during insertions and deletions. 红黑树是一种自我调整的二叉搜索树。每个节点有一个额外的bit,一般被解释为颜色(红/黑),这些颜色位用来确保在插入删除时保持二叉树的大致平衡。

    规则

    1. 根节点与叶节点都是黑色节点,其中叶节点为Null节点
    2. 每个红色节点的两个子节点都是黑色节点,换句话说就是不能有连续两个红色节点
    3. 从根节点到所有叶子节点上的黑色节点数量是相同的

    红黑树与B树(二叉搜索树)的区别

    是对二叉树的改进,因为二叉树最坏的情况(比如从小到大依次插入)会变成一个链表,所以其多了旋转操作

    源码的核心算法在于左旋转,右旋转

    如果是内侧插入,需要进行两次旋转(对父节点右旋,对祖父节点左旋)

    如果是外侧插入,需要进行一次旋转(对祖父节点右旋)

    *这里的内外是相对于根节点方向而言

    参考:https://www.cnblogs.com/xrq730/p/6867924.html

    ---栖息之鹰(一个外表懒洋洋的内心有激情的程序员) 此博客为笔者原著,转载时请注明出处,谢谢!
  • 相关阅读:
    PyCharm使用(完全图解(最新经典))
    pg存储过程学习
    sql_to_sqlalchemy
    python中嵌入lua解析器
    Python和lua互相调用
    Lupa
    [cb] Unity Editor 添加右键菜单
    [C#] 委托之Action和Func区别
    [反编译U3D]Decompile Unity Resources
    [cb] Assetbundle打包(一)
  • 原文地址:https://www.cnblogs.com/roostinghawk/p/8044017.html
Copyright © 2011-2022 走看看