在“def same_child_values”中。我试图比较两棵树,看看另一棵树是否与主树具有相同的值节点树.子项. 在这个例子中,我使用一个集合来比较它们。但是在我的代码中,当树的深度大于1时,我的代码无法正确地将节点添加到集合中。有人能帮我吗?在
class Tree:
'''Tree ADT; nodes may have any number of children'''
def __init__(self: 'Tree',
item: object =None, children: list =None):
'''Create a node with item and any number of children'''
self.item = item
if not children:
self.children = []
else:
self.children = children[:]
def __repr__(self: 'Tree') -> str:
'''Return representation of Tree as a string'''
if self.children:
return 'Tree({0}, {1})'.format(repr(self.item), repr(self.children))
else:
return 'Tree({})'.format(repr(self.item))
def is_leaf(self: 'Tree') -> bool:
'''Return True iff this Tree node is a leaf (has no children).'''
return self.children == []
def remove_equal(self: 'Tree') -> None:
'''Remove every child that has the same item as its parent;
any children of a removed node n become children of an ancestor of n.
>>> t = Tree(1, [Tree(2, [Tree(1), Tree(2)]), Tree(1)])
>>> t.remove_equal()
>>> repr(t)
'Tree(1, [Tree(2, [Tree(1)])])'
>>> t = Tree(4, [Tree(4, [Tree(6)])])
>>> t.remove_equal()
>>> repr(t)
'Tree(4, [Tree(6)])'
>>> t = Tree(4, [Tree(4, [Tree(4, [Tree(4)])])])
>>> t.remove_equal()
>>> repr(t)
'Tree(4)'
>>> t = Tree(4, [Tree(4, [Tree(4, [Tree(6), Tree(7)]), Tree(8)]), Tree(9)])
>>> t.remove_equal()
>>> repr(t)
'Tree(4, [Tree(6), Tree(7), Tree(8), Tree(9)])'
'''
new_children = []
for c in self.children:
c.remove_equal()
if not c.item == self.item:
new_children.append(c)
else:
new_children.extend(c.children)
self.children = new_children
# Q1: Complete this method (This was the last part of last week's lab.
# If you did not have a chance to finish it last week, work on it today.)
这是我需要完成的功能
^{pr2}$这是我的代码:
for c in self.children:
a.add(c.item)
c.same_child_values(other)
for d in other.children:
b.add(d.item)
self.same_child_values(d)
return b
如果我的“其他”树是t3,我希望在我的集合中看到()
my set() = {8, 9, 6, 7}
如果我的“其他”树是t2,我希望在我的集合()中看到
my set() = {8, 9, 6, 7, 5}
但t2的代码输出是
my set() = {6, 7}
(顺便问一下,python中的set()是否应该在默认情况下对值进行排序?)在
请帮忙。在
这就是你要找的吗?在
关键元素在docstring中:“我们只查看直接子级的值,而不是子级的值。”
相关问题 更多 >
编程相关推荐