LeetCode112 路徑總和(DFS)

2021-10-07 21:07:44 字數 1419 閱讀 7330

給定乙個二叉樹和乙個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。說明: 葉子節點是指沒有子節點的節點。  

示例:  給定如下二叉樹 [5,4,8,11,null,13,4,7,2,null,null,null,1],以及目標和 sum = 22

返回true, 因為存在目標和為 22 的根節點到葉子節點的路徑5->4->11->2

相關題目

dfs-104. 二叉樹的最大深度 

fs-111. 二叉樹的最小深度 

# definition for a binary tree node.

class treenode(object):

def __init__(self, x):

self.val = x

self.left = none

self.right = none

class solution(object):

def haspathsum(self, root, sum):

""":type root: treenode

:type sum: int

:rtype: bool

"""if root == none:

return false

return self.helper(root, sum)

def helper(self, root, sum):

# 判斷 root 是否為葉子節點

# 到達葉子節點:判斷節點的左右子樹同時為空

if root.left == none and root.right == none:

return root.val == sum # 判斷是否達到sum

# 左孩子為null

if root.left == none:

return self.helper(root.right, sum - root.val)

# 右孩子為null

if root.right == none:

return self.helper(root.left, sum - root.val)

return self.helper(root.left, sum - root.val) or self.helper(root.right, sum - root.val)

其他解法

dfs、回溯、bfs(佇列)、棧

solution/lu-jing-zong-he-de-si-chong-jie-fa-dfs-hui-su-bfs-/

LeetCode112 路徑總和

給定乙個二叉樹和乙個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。說明 葉子節點是指沒有子節點的節點。示例 給定如下二叉樹,以及目標和sum 22,5 48 1113 4 721返回true,因為存在目標和為 22 的根節點到葉子節點的路徑5 4 11 2。遍...

LeetCode 112 路徑總和

給定乙個二叉樹和乙個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。說明 葉子節點是指沒有子節點的節點。示例 給定如下二叉樹,以及目標和 sum 22,5 4 8 11 13 4 7 2 1 返回 true,因為存在目標和為 22 的根節點到葉子節點的路徑 5 ...

Leetcode 112 路徑總和

給定乙個二叉樹和乙個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。說明 葉子節點是指沒有子節點的節點。示例 給定如下二叉樹,以及目標和sum 22,5 48 1113 4 721 返回true,因為存在目標和為 22 的根節點到葉子節點的路徑5 4 11 2。...