我试图在Python中构建一个可以容纳4个孩子的树。子节点被定义为数组。 我挣扎的是递归插入这棵树。
以下是我迄今为止所做的事情: 节点类:
class node:
def __init__(self,value,city,children=[None,None,None,None]):
self.value = value
self.children = children
self.city = city
树类:
from node import *
from isFull import *
class tree:
root = None
def __int__(self):
self.root = None
def insert(self, city, value):
if self.root == None:
self.root = node(value, city, children=[None,None,None,None])
else:
self.rec_insert(city, value, self.root, 0)
def rec_insert(self, city, value, nodes, index):
if nodes.children[index] is None:
nodes.children[index] = node(value, city, children=[None,None,None,None])
return
elif index < 3:
self.rec_insert(city, value, nodes, index + 1)
elif index == 3:
self.rec_insert(city, value, nodes.children[0], 0)
所以我观察到的是第一个if语句实际上是有效的。我可以插入一个根并插入到第一层子节目中。
如果nodes.children [index]为None:
现在问题出现在2级。可能是因为我错误地下降了。 在开始时,我可以正常插入第2层,但是当它到达树的右侧时,它会跳过第2层中的最后一个孩子。
我在这个功能背后的逻辑:
self.rec_insert(city,value,nodes.children [0],0) 我想让它下降到最左边的孩子然后我的其他条件语句将使它在插入时向右移动。
此检查:
elif index == 3: 我用它来确定是否已将所有子项插入到节点中。
任何帮助将不胜感激。