终结B站没人能讲清楚红黑树的历史,不服等你来踢馆!-【码炫课堂收费课节选之-红黑树源码解析及手写红黑树】
2022-01-25 17:41 cascle 阅读(262) 评论(0) 编辑 收藏 举报1.红黑树前置知识:二叉排序树常见操作详解
Treemap:Doug Lea和Josh Bloch
优化了原始红黑树
红黑树:二叉树基础上进行染色,达到一种黑色平衡,即每个分支黑色节点数目一致
二叉查找树:上图投影部分可以看到是按顺序排列的,向一只手压下来压平
一样
这里讲义写错了,正确的:前序是:根左右;中序是:左中右;后序是:左右根。
这里的“前中后”指的是根节点在哪里
前驱、后继:中序二叉树排列
小于的节点可以无穷无尽,但一定有个最大的;大于的节点也可以无穷无尽,但总有一个最小的
有两个孩子的节点的前驱、后继节点一定是叶节点,最大、最小决定了这个性质
临近紧挨的俩叶子节点
这里说错了, 叶子节点没有左右孩子但是有前驱和后继
有两个节点就是用前驱或者后继节点代替,这俩节点有个性质:那就是一定是叶节点,并且满足大小排序规则,所以替代没有影响。长兄为父
2.红黑树前置知识-二叉排序树-avl树-红黑树性能比较详解
左旋右旋:不改变前驱和后继
右旋:左孩子提起来交换位置,自己去右子树
左旋:右孩子提起来交换位置,自己去左子树
谁不平衡谁转,旋转先从子树后到根节点,这样子树自己先平衡了父树一般也就平衡了
旋转前后为什么会等价?
红黑树:平衡所以查找快但是新增、删除旋转次数少,是二叉搜索树和avl树的折中
红黑树放宽了平衡的条件,对高度差距不那么严苛