以下程序找到總和給定數字的路徑。迭代DFS如何遍歷?
def hasPathSum(self, root, sum):
if root is None:
return False
stack = [(root, sum)]
while stack:
node, _sum = stack.pop()
if node.left is node.right is None and node.val == _sum:
return True
if node.left:
stack.append((node.left, _sum - node.val))
if node.right:
stack.append((node.right, _sum - node.val))
return False
它對堆棧使用迭代DFS。我理解程序的大部分內容,但我不知道如果到達葉節點,它是如何遍歷的。
我想唯一的回溯方式是調用每個節點的函數。這就是我們稱之爲迭代的原因。我的理解是否正確和完整?或者更確切地說,我們不會回溯。我們只是從一個新的子節點開始。
如果這是真的,那麼我們通過重新探訪許多路徑而浪費時間,是不是?
我不相信這段代碼會使用迭代加深,並且總和只會在它碰到葉子時發揮作用,所以我不確定您提供的鏈接或您在此處包含的解釋是否與這個問題。 – templatetypedef