我想返回二叉树中的值列表。 是否有更短更有效的方法来编写数字方法?
谢谢。
class BTNode(object):
"""A node in a binary tree."""
def __init__(self, item, left=None, right=None):
"""(BTNode, object, BTNode, BTNode) -> NoneType
Initialize this node to store item and have children left and right,
as well as depth 0.
"""
self.item = item
self.left = left
self.right = right
self.depth = 0 # the depth of this node in a tree
def number(self) -> list:
lst = []
if self.right is None and self.left is None:
lst.append(self.item)
else:
lst.append(self.item)
if self.left:
left = self.left.number()
lst.extend(left)
if self.right:
right = self.right.number()
lst.extend(right)
return lst
答案 0 :(得分:3)
如果你不介意生成器而不是列表,你可以非常巧妙地编写代码。
def number(self):
yield self.item
for child in self.left, self.right:
if child: yield from child.number()
我以前从未见过Python中的类型注释。这是Python 3吗?
答案 1 :(得分:0)
我有一个非递归迭代器,用于返回树中的值(treap) https://pypi.python.org/pypi/treap
从迭代器到列表只需要包装像列表一样的迭代器(it())
最后我听说''收益'很慢。