【发布时间】:2021-05-18 11:40:36
【问题描述】:
我有一个关于类和“自我”的相对基本的问题,虽然我在研究后知道它们是用来做什么的——但我仍然不太了解一些实际的实现。
我的问题:
-
最后一行代码没有定义“自我”。这是为什么呢?
-
我已经看到在 post-order_traversal_iterative 的函数中我会执行 self.root 的情况,但在其他情况下它只是 root。 我知道 class 的目的是让我们可以在同一个类中但在不同的函数中引用变量和其他东西,这就是我们将使用 self.root 的地方 - 对吗?
-
考虑到 2。我认为我们根本不需要“自我”。但是当我把所有的自我都拿出来时,我的输入 [1,None,2,3] 得到了一个意想不到的论据
class Treenode: def __init__(self,val=0, left=None, right=None): self.val = val self.left = left self.right = right class Solution: def post_order_traversal_iterative(self,root): stack = [root] output = [] if not root: return [] while stack: curr = stack.pop() output.append(curr.val) if curr.right: stack.append(curr.left) if curr.left: stack.append(curr.right) return output x = Solution() print(x.post_order_traversal_iterative(self,[1, None, 2, 3]))
【问题讨论】:
-
问题,函数中的
root应该是Treenode而不是列表? -
医生,我不太明白。在上面的代码中,root 应该是一个 Treenode。特别是树的第一个/顶部节点
-
我的意思是打电话给
print(x.post_order_traversal_iterative(Treenode(1, None, 2, 3))因为[1, None, 2, 3]是一个列表而不是Treenode