我是新来的,对python很陌生!
我们有家庭作业,我已经可以做剩下的了,但还有一个问题: 如果我有这样的树层次结构:
root = [
parent1 = [
child1,
child2 = [
sub_child
]
child3
],
parent2 = [
child1,
child2
]
]
它们都是一个名为TreeHierarchyClass
的类的实例,它们都有一个name属性,我如何找到输入了name的那个?
我试着用循环,但没办法知道我需要多少?取名字很容易:
name = input("Enter name: ")
if name == TreeHierarchyObject.name:
print("Found it!")
但我该如何循环遍历对象呢?
您可以使用
recursion
,也可以使用iteration
。无论哪种方式都无关紧要。但是你需要一个搜索树的策略。以下是一些策略,可用于查看图表:
其主要思想是不经过同一个节点/叶两次,这对于树来说是微不足道的,但是对于图来说需要
coloring
:有一些设计模式可以使用,例如
visitor
模式,您可以向.visit()
添加方法TreeHierarchyClass
来访问其子节点,并添加另一个方法来按名称查找节点。示例:
您可以通过以下方式访问所有节点:
让我们构建一个示例树结构:
现在让我们找到一些项目:
此示例将打印:
你应该在这里使用简单的递归。 该方法稍微取决于子对象如何附加到父对象。
如果它们在列表
self.children
中(我建议您这样做),则此方法有效。 只需在类中定义以下方法:编辑: 要使此操作适用于任何属性,而不仅仅是名称,请改用
getattr()
:只需调用
root.findObjectByName("Sub Child!")
或使用第二种方法:root.findObject("name", "Sub Child!")
相关问题 更多 >
编程相关推荐