B站左程云算法视频基础提升08

有序表 o(logN)

红黑树、AVL树和SB树 跳表skiplist 可实现有序表

平衡搜索二叉树

实现增删改查:

给一个节点,小的往左滑,大的往右滑

找到小于等于某数的最近的节点

B站左程云算法视频基础提升08_第1张图片

删除:

1)要删除的点没有左孩子也没有右孩子,则直接父节点指向悬空

2)如果要删除的节点左右孩子不是双全的,则让父节点指向孩子节点

3)左右孩子都双全,可以拿左树上最右节点替代,或右树上最左节点;

如何兼顾平衡性?

狭义的平衡性:平衡搜索二叉树:左右子树的高度差不超过1

广义的平衡性:任何一个节点左右两棵子树的体量(高度、节点数)差不多

B站左程云算法视频基础提升08_第2张图片

AVL对平衡性的定义是狭义上的:

左旋、右旋:

B站左程云算法视频基础提升08_第3张图片

左旋右旋使得树保持平衡性

AVL查得树不平衡,从新加入节点或替代删除节点的节点开始往上看所有的节点是否保持平衡性

B站左程云算法视频基础提升08_第4张图片

 

AVL 红黑树 和SB树不同的是对平衡性的判断

SB树 size balance

平衡性:每棵子树的大小,不小于其兄弟的子树的大小,即每棵叔叔树的大小,不小于其任何侄子树的大小

B站左程云算法视频基础提升08_第5张图片

 

红黑树的定义:

1)每个节点的颜色红or黑

2)整棵树的头结点和叶节点(最底层空节点)为黑

3)红点不相邻

4)cur当前头,每条到结束的路径黑色一样多

跳表(K key, V val ,指向下级节点的指针)

给一个结点,0.5概率返回0,0.5概率返回1,返回0截止,给出有几个指针

先给一个默认节点(最小key),初始只有一条指向下级节点的指针,默认节点会扩充指针

B站左程云算法视频基础提升08_第6张图片

 

利用高度加速

跳表的效率只和高层低层的分布有关系,和节点无关

你可能感兴趣的:(b树,数据结构)