版权声明:转载请注明出处 https://blog.csdn.net/HeXiQuan123/article/details/86679323
希望看此文前了解什么是2-3树,就不介绍什么是2-3树了
查找遍历也不说了
直接上难啃的骨头
2-3树中节点插入规则:
规则1:优先搜索并沉底
规则2:沉底产生4节点则分解
规则一很容易理解,即向2节点插入新节点key=k'产生3节点,若以前2节点的key是k,产生左子树<k,右子树>k,插入后变成左子树<min(k,k'),中子树min(k,k')<*<max(k,k'),右子树>max(k,k');如图
如果不小心最后面节点是3节点,插入后产生4节点,这时就根据规则2进行分解4节点,方便起见不绘制最后一层NULL
对于6中情况的图,希望理解,但是如果记忆不住,后面还有更简单的记忆法
分为6种情况:(此间key大小顺序即abcdefg的大小顺序)
1、就一个节点4节点,即从空树开始插插插插到第三个数插进去,根据规则1,这时就是一个4节点,根据规则2,需要分解4节点:这里分解为一棵3个2-节点的数,如图:
2、父亲是2节点时,两种情况,一种左,一种右互相对称,只写一种图。
3、父亲是3-节点,这时其实是上移4-节点,直到情况2或者情况1
有三种情况如下(注意大小一定满足排序树):
对应变成:
如果不能记忆,可以继续看下面的简单记忆方法
简单记忆法:
只需要把4-节点按照1变成3个2-节点,如下:
那么对于3中的左情况而言:
其他任何情况适用。