【发布时间】:2020-11-02 09:58:53
【问题描述】:
我正在尝试实现二叉树的迭代中序遍历。
node.py:
class Node:
def __init__(self, node=None, left=None, right=None):
self.node = node
self.left = left
self.right = right
inorder_traversal.py:
from node import Node
def in_order(root):
stack = nodes = []
while stack or root:
if root:
stack.append(root)
root = root.left
else:
current = stack.pop()
nodes.append(current.node)
root = current.right
return nodes
def main():
'''
Construct the below binary tree:
15
/ \
/ \
/ \
10 20
/ \ / \
8 12 16 25
'''
root = Node(15)
root.left = Node(10)
root.right = Node(20)
root.left.left = Node(8)
root.left.right = Node(12)
root.right.left = Node(16)
root.right.right = Node(25)
print(in_order(root))
if __name__ == '__main__':
main()
我得到了:AttributeError: 'int' object has no attribute 'node'。
我该如何解决这个错误?
【问题讨论】:
-
请提供预期的MRE。显示中间结果与预期结果的偏差。我们应该能够将您的代码块粘贴到文件中,运行它并重现您的问题。这也让我们可以在您的上下文中测试任何建议。给出整个错误消息,包括堆栈跟踪。我们还希望您在错误点之前跟踪有问题的值。您对他们如何达到这些价值观感到困惑?
-
@Prune 这里给出的例子对我来说似乎很小并且可以重现......
-
@Prune 抱歉,我刚刚在第二个代码块中添加了
import语句。堆栈跟踪中有 3 行,如果完全添加,我觉得这是不必要的。
标签: python algorithm binary-tree tree-traversal