如何解决如何从每个递归调用中获取值并放入单个列表中?
给出一个树形结构:
class Node:
def __init__(self,data,left=None,right=None):
self.left = left
self.right = right
self.data = data
我希望能够获取递归调用的结果(self.data)
def preOrder(self):
if self:
print(self.data)
if self.left is not None:
self.left.preOrder()
if self.right is not None:
self.right.preOrder()
并能够在单个列表中返回它们。
哪里
root= Node(2,Node(1,Node(6),Node(3)),Node(3,None,Node(9)))
root.preOrder()
将产生[2,1,6,3,9]。
我曾经尝试过使用辅助功能,但是我被困住了,无法获得有效的解决方案。
解决方法
class Node:
def __init__(self,data,left=None,right=None):
self.left = left
self.right = right
self.data = data
def preOrder(self,result = None):
if result is None:
result = []
if self:
result.append(self.data)
if self.left is not None:
self.left.preOrder(result)
if self.right is not None:
self.right.preOrder(result)
print(result)
return result
root= Node(2,Node(1,Node(6),Node(3)),Node(3,None,Node(9)))
root.preOrder()
不是打印附加到列表,而是再次将该列表发送到同一功能。继续附加它,最后返回。
,您可以预先订购class Node:
def __init__(self,right=None):
self.left = left
self.right = right
self.data = data
def preOrder(self):
yield self.data
if self.left:
yield from self.left.preOrder()
if self.right:
yield from self.right.preOrder()
root = Node(2,Node(9)))
print(list(root.preOrder()))
个值,并在调用它们时将它们收集在列表中。
yield from
class App extends React.Component {
render() {
return (
<div>
<Accordion>
<Card>
<Card.Header>
<Accordion.Toggle as={Button} variant="link" eventKey="0">
All movies
</Accordion.Toggle>
</Card.Header>
[....]
</div>
);
}
}
至少需要python 3.3,但现在我认为这不是问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。