leetcode112 路徑總和

2022-06-23 14:09:11 字數 1057 閱讀 2105

題目連結

112. 路徑總和

題目:

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

說明: 葉子節點是指沒有子節點的節點。

示例:給定如下二叉樹,以及目標和 sum = 22,

5

/ \4 8

/ / \

11 13 4

/ \ \

7 2 1

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

思路:

從根節點開始往下搜,直到碰到葉子節點再判斷。注意不能剪枝,因為可能有負數。關於根節點算不算葉子節點,我覺得如果根節點的左右子樹都為空,那麼這時候算葉子節點,如輸入[1],sum=1,返回true;如果左右子樹至少有一個不為空,則根節點不算入葉子結點,如輸入[1,2],sum=1,返回false。

code:

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

intcalc

(treenode *root,

int cnt,

int sum)

if(root-

>left)if(

calc

(root-

>left,cnt+root-

>val,sum)

)return1;

if(root-

>right)if(

calc

(root-

>right,cnt+root-

>val,sum)

)return1;

return0;

}};