【发布时间】:2014-08-21 23:14:15
【问题描述】:
来自http://cbio.ufs.ac.za/live_docs/nbn_tut/trees.html
让我们创建一个 python 类来表示一棵树。我们需要一些方法来 将数据存储在节点中,并以某种方式指示任何子节点,或者 子树。
class node(object): def __init__(self, value, children = []): self.value = value self.children = children哇!这似乎太容易了......但不管你信不信,它确实做到了 工作。让我们使用我们的新类来存储我们的家谱...
tree = node("grandmother", [ node("daughter", [ node("granddaughter"), node("grandson")]), node("son", [ node("granddaughter"), node("grandson")]) ]);
我希望能够同时获取每个 node 实例的子级和父级,因此我认为我需要同时定义其父级和子级
class node(object):
def __init__(self, value, children = [], parent = []):
self.value = value
self.children = children
self.parent = parent
但问题是每个节点的每个子节点和父节点内部都会有一个副本。如果我更改它的值,我将不得不更改其副本中的所有值。在 C++ 中,不存在这样的问题,因为我们可以通过仅在其中存储指向其子节点和父节点的指针来引用节点的子节点和父节点。我想知道如何在 Python 中实现这样的树?谢谢。
【问题讨论】: