我试图返回树的内部结构和内部结构列表的长度,以下是我目前得到的结果:
class Node:
def __init__(self, item, left=None, right=None):
self.item = item
self.left = left
self.right = right
def internals(self):
leaves = []
internals = []
if self.left == None and self.right == None:
leaves.append(self.item)
else:
if self.left:
itls = self.left.internals()
internals.extend(itls)
if self.right:
itls = self.right.internals()
internals.extend(itls)
internals.append(self.item)
return internals
if(__name__ == "__main__"):
tree = Node(10,Node(3, Node(4)),Node(7, Node(8)))
print(tree.internals())
它可以很好地返回内部的列表
示例:
tree = Node(10,Node(3, Node(4)),Node(7, Node(8)))
print(tree.internals())
[3, 7, 10]
但是如果我试图返回列表的长度和内部列表,我的整个列表似乎都变形了,这就是我不确定发生了什么的地方。你知道吗
为了返回内部构件列表的长度,我刚刚将internals方法的最后一行更改为return internals,len(internals)
但是当我在树上调用这个方法时,它会返回内部的列表和列表的长度,但问题是不知怎么的,列表变形了,因此列表的长度也是错误的。你知道吗
tree = Node(10,Node(3, Node(4)),Node(7, Node(8)))
print(tree.internals())
([[[], 0, 3], 3, [[], 0, 7], 3, 10], 5)
不知道为什么会这样,所以我想知道是否有人能帮我解决这个问题。你知道吗
如果将列表的长度添加到递归调用中,则会导致递归调用的混乱。 这是一个有效的版本。我添加了一个额外的方法来调用递归方法。你知道吗
结果是:
相关问题 更多 >
编程相关推荐