我需要某种树集合,它能够存储基本的子父关系和下一个简单的操作:
这个集合应该很快并且可以是不可变的我不需要更改树。有很多树木收集,我不知道我需要什么样的树。
你知道Python中的这样的集合吗?
答案 0 :(得分:0)
我认为你必须自己写。这很容易
class Tree:
def __init__(self, data, parent=None):
self.children = []
self.parent = parent
self.data = data
def add_child(self, data):
self.children.append(Tree(data, self))
def has_child(self, target):
return any(map(lambda x: x.data == target or x.has_child(target), self.children))
def has_parent(self, target):
return (self.parent.data == target or self.parent.has_parent(target)) if self.parent else False
我不担心这时的速度。有一些方法可以加快这一点,但像这样的数据结构相对轻量级。如果你确实需要快速的东西,那么你最好的选择是用C语言写它然后用python访问它。这对你的目的来说可能有点过分了。