如何将 7 插入到这棵 2-3 树中
How to insert 7 into this 2-3 tree
我正在尝试将元素 7 插入到这棵 2-3 树中(见图):
既然包含6和9的节点已经满了,我应该把7移到6和9的父节点上,但是那个节点也已经满了,那怎么办?
你是正确的,叶子 (6, 9) 已满,必须在插入 7 时拆分。这意味着中间值(当时为 7)必须插入父节点(本例中为根节点) ).正如您正确注意到的那样,该节点 (2, 5) 也已满。所以……它也必须分裂。考虑 7 时,中间值为 5,必须“向上”移动。由于没有“up”,所以会形成一个新的根节点:
如果我们可视化中间的违规状态,我们会在插入过程中得到:
┌───┬───┐
│ 2 │ 5 │
└───┴───┘
/ | \
┌─┬─┐ ┌─┬─┐ ┌─┬─┬─┐
│1│ │ │3│4│ │6│7│9│ (overflow)
└─┴─┘ └─┴─┘ └─┴─┴─┘
然后7向上移动:
┌───┬───┬───┐
│ 2 │ 5 │ 7 │ (overflow)
└───┴───┴───┘
/ | | \
┌─┬─┐ ┌─┬─┐ ┌─┬─┐ ┌─┬─┐
│1│ │ │3│4│ │6│ │ │9│ │
└─┴─┘ └─┴─┘ └─┴─┘ └─┴─┘
然后5上移:
┌─┬─┐
│5│ │
└─┴─┘
/ \
┌─┬─┐ ┌─┬─┐
│2│ │ │7│ │
└─┴─┘ └─┴─┘
/ \ / \
┌─┬─┐ ┌─┬─┐ ┌─┬─┐ ┌─┬─┐
│1│ │ │3│4│ │6│ │ │9│ │
└─┴─┘ └─┴─┘ └─┴─┘ └─┴─┘
我正在尝试将元素 7 插入到这棵 2-3 树中(见图):
既然包含6和9的节点已经满了,我应该把7移到6和9的父节点上,但是那个节点也已经满了,那怎么办?
你是正确的,叶子 (6, 9) 已满,必须在插入 7 时拆分。这意味着中间值(当时为 7)必须插入父节点(本例中为根节点) ).正如您正确注意到的那样,该节点 (2, 5) 也已满。所以……它也必须分裂。考虑 7 时,中间值为 5,必须“向上”移动。由于没有“up”,所以会形成一个新的根节点:
如果我们可视化中间的违规状态,我们会在插入过程中得到:
┌───┬───┐
│ 2 │ 5 │
└───┴───┘
/ | \
┌─┬─┐ ┌─┬─┐ ┌─┬─┬─┐
│1│ │ │3│4│ │6│7│9│ (overflow)
└─┴─┘ └─┴─┘ └─┴─┴─┘
然后7向上移动:
┌───┬───┬───┐
│ 2 │ 5 │ 7 │ (overflow)
└───┴───┴───┘
/ | | \
┌─┬─┐ ┌─┬─┐ ┌─┬─┐ ┌─┬─┐
│1│ │ │3│4│ │6│ │ │9│ │
└─┴─┘ └─┴─┘ └─┴─┘ └─┴─┘
然后5上移:
┌─┬─┐
│5│ │
└─┴─┘
/ \
┌─┬─┐ ┌─┬─┐
│2│ │ │7│ │
└─┴─┘ └─┴─┘
/ \ / \
┌─┬─┐ ┌─┬─┐ ┌─┬─┐ ┌─┬─┐
│1│ │ │3│4│ │6│ │ │9│ │
└─┴─┘ └─┴─┘ └─┴─┘ └─┴─┘