我想创建一个对象,我们称其为模型,其中包含一个属性,即二叉树的根。我希望该模型对象具有构建特定深度的二叉树的方法。我创建了这样一个类,model它使用了一个树节点类binary_tree_node,如下所示:class binary_tree_node: def __init__(self, data): self.data = data self.left_child = None self.right_child = Noneclass model: def __init__(self, max_depth = 3): self.root = None self.max_depth = max_depth def build_tree(self): self.build_tree_recursive_helper(self.root, 0) def build_tree_recursive_helper(self, node, current_depth): # create the new node node = binary_tree_node('data') # check base case if current_depth >= self.max_depth: return # make recursive calls self.build_tree_recursive_helper(node.left_child, current_depth + 1) self.build_tree_recursive_helper(node.right_child, current_depth + 1)我希望能够实例化模型,构建树,然后自省树,就像这样m = model()m.build_tree()print(m.root.data)>>> 'data'但相反,我在尝试内省时得到以下信息:m = model()m.build_tree()print(m.root.data)AttributeError Traceback (most recent call last)<ipython-input-138-eaa2b3c07e85> in <module> 1 m = model() 2 m.build_tree()----> 3 print(m.root.data)AttributeError: 'NoneType' object has no attribute 'data'这违反了我的理解,即 python 传递对象引用而不是值。我应该如何修改我的binary_tree_node和model classes达到我的预期结果?
1 回答
桃花长相依
TA贡献1860条经验 获得超8个赞
为什么不返回构建的节点并获取引用,如下所示:
max_depth = 4
def build_tree_recursive_helper(current_depth):
# check base case
if current_depth >= max_depth:
return None
node = binary_tree_node('data')
# make recursive calls
node.left_child = build_tree_recursive_helper(current_depth + 1)
node.right_child = build_tree_recursive_helper(current_depth + 1)
return node
请注意,您必须将self背面放在您的实现中。
添加回答
举报
0/150
提交
取消
