6) 删除
执行删除之前需要对删除 key 进行查找,若查找失败则无法删除。查找成功,才可删除 key 。删除节点情况有以下几种:
6.1 删除的节点不为 2- 节点
删除的节点不为 2- 节点,则将要删除的目标 key 直接删除即可。
图解:
6.2 删除非叶子节点
当删除的节点是非叶子节点,无论待删除节点的 key 是多少个,先使用中序遍历找到待删除节点的后继节点,然后将后继节点与待删除节点位置互换,此时就将问题转化为删除节点为叶子节点(平衡树的非叶子节点中序遍历后继节点肯定叶子节点),如果该叶子是非 2- 节点,则与 2.4.1 一样,如果该节点是 2- 节点,则跟后面的 2.4.3 情形一样。
图解: