leetcode 112. 路径总和

class Solution:
    def hasPathSum(self, root: TreeNode, sum: int) -> bool:
        # 暂时还是有点不太好理解,以后再看看。
        # 深度优先。参考 https://leetcode-cn.com/problems/path-sum/solution/fei-di-gui-dfsrong-yi-li-jie-python-by-baiyizhe/ 
        if not root:
            return sum == None 
        # 同时保存节点,和当前这条路径上的数值之和 
        stack = [(root.val, root)]  

        while stack:
            # 取出来的时候也是2个值
            temp_sum, node = stack.pop()  
            # 我只想先看看按照这种写法的话,实际的遍历顺序是什么样的
            print(node.val)


            if node.right:
                # 这里的这个 + 这种写法,我之前是没遇到的,通常我会写:
                # temp_sum += node.right.val
                # 但是当前我们是在 while 循环中,所以可以这样写的。

                # print(temp_sum + node.right.val)
                stack.append((temp_sum + node.right.val, node.right))
            
            if node.left:
                # print(temp_sum + node.left.val)
                stack.append((temp_sum + node.left.val, node.left))

            if not node.left and not node.right and temp_sum == sum:
                # print("okok")
                return True 
            
        return False 

你可能感兴趣的:(leetcode 112. 路径总和)