leetcode 路徑總和 遞迴

2021-10-14 04:35:00 字數 945 閱讀 3192

假定從根節點到當前節點的值之和為 val,我們可以將這個大問題轉化為乙個小問題:是否存在從當前節點的子節點到葉子的路徑,滿足其路徑和為 sum - val。

不難發現這滿足遞迴的性質,若當前節點就是葉子節點,那麼我們直接判斷 sum 是否等於 val 即可(因為路徑和已經確定,就是當前節點的值,我們只需要判斷該路徑和是否滿足條件)。若當前節點不是葉子節點,我們只需要遞迴地詢問它的子節點是否能滿足條件即可。

# definition for a binary tree node.

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution

:def

haspathsum

(self, root: treenode,

sum:

int)

->

bool:if

not root:

return

false

ifnot root.left and

not root.right:

return

sum== root.val

return self.haspathsum(root.left,

sum-root.val)

or self.haspathsum(root.right,

sum-root.val)

複雜度分析路徑總和 - i

LeetCode 路徑總和

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

LeetCode 路徑總和

給定乙個二叉樹,它的每個結點都存放著乙個整數值。找出路徑和等於給定數值的路徑總數。路徑不需要從根節點開始,也不需要在葉子節點結束,但是路徑方向必須是向下的 只能從父節點到子節點 二叉樹不超過1000個節點,且節點數值範圍是 1000000,1000000 的整數。示例 root 10,5,3,3,2...

路徑總和 (雙遞迴)

這題是我遇到的第乙個雙遞迴的題目,這題和路徑總和 回溯法 的唯一不同在於它沒有限定路徑的起點 不一定要求是根結點 也沒有限定路徑的終點 不一定要求是葉子結點 所以就要用到雙遞迴了。我的 如下 雙遞迴 class solution void dfs 1 treenode root,int sum vo...