【发布时间】:2017-05-28 02:11:35
【问题描述】:
我正在尝试对树进行中序遍历。代码本身感觉不错,只是它不能正常工作。我有一种感觉,它要么与 if 条件、append 在 python 中的工作方式有关,要么与 return 相关。我认为,如果我使用 print 而不是 return,这可以正常工作,但我希望能够使用 return 并且仍然得到正确的答案。例如,对于树 [1,None,2,3],我的代码返回 [1],这显然是不正确的。
另外,是否可以使用列表理解来解决这个问题?如果是这样,任何示例代码将不胜感激。
这是我的代码:
class Solution(object):
def inorderTraversal(self, root):
res = []
if root:
self.inorderTraversal(root.left)
res.append(root.val)
self.inorderTraversal(root.right)
return res
此外,在将其标记为重复之前,我知道在 Stackoverflow 上已按顺序询问了遍历(很多次),但它们都没有帮助我理解为什么我的理解是错误的。如果有人帮助我学习如何纠正我的方法,而不是简单地发布另一个链接而没有解释,我将非常感激。非常感谢!
【问题讨论】:
-
树的结构如何?
-
它是一棵二叉树(不一定是二叉搜索)。例如,传递给 root 的列表的格式为 root, left tree, right tree....[1,None,2,3] 的根为 1,没有左孩子,右孩子为 2(它有3) 的左孩子。
-
我问的原因是因为您似乎正在为
root传递一个列表,但列表没有left或right属性
标签: python list binary-tree inorder