我的班主任向我提出了一个问题,即在2-3树中进行插入。
我所做的是上层方法。他想要的是下面的方法。你能告诉我哪个是正确的方法,因为我看过网络,我可以看到这两种方法。但我仍然不知道为什么我失去了10分!在此先感谢您的帮助。
答案 0 :(得分:1)
首先我要说一下2-3棵树有很多不同的版本,所以可能会令人困惑。实际上他们只对商店的价值观有所不同。有些只在每个节点中的叶子和其他商店值中存储值。
我相信你的老师正在使用2-3树的后一种定义。因此,您的树的问题是“根”节点具有与其子节点相同的值,节点永远不会与其子节点共享相同的值。虽然,我不认为你的老师提供的是一棵真正的2-3棵树。当节点包含3个值时,2-3树将分裂。我希望下面是正确的输出:
将4添加到树:
(4)
将7添加到树中:
(4,7)
在树上添加6:
(4,6,7)
*splits*
(6)
(4) (7)
一旦根节点得到3个值,它就会分成1-2树。
如果您要插入8:
(6)
(4) (7,8)
如果您要插入9:
(6)
(4) (7,8,9)
*push-up*
(6,8)
(4) (7) (9)
当非根节点获得3个值时;将中间值推到父级,如果按下该值,则该值使父级具有3个值,则父级将拆分。