因為是從根節點到葉節點的,因此不用關心中間節點,只要在判斷走到葉節點時,一層層減去每一層的節點的值與當前葉子
節點的值一致,則肯定滿足條件。 另外,注意避免下面注釋的2個坑。
/**
* definition for a binary tree node.
* struct treenode
* };
*/class
solution
// 坑1:誤以為當前節點比剩餘的值大即認為失敗,因為中間節點正負數都有可能,並不只是一味的正數相加
// 比如1->-2->1->-1(sum=-2)
//if (root->val > sum)
// 坑2:誤認為中間某乙個節點值與減去上幾層之後的值一致,就認為到葉子節點就會大於sum,其實還是
// 沒有考慮中間有正負的情況
//if (root->val == sum && (root->left || root->right))
// 這裡表明走到葉子節點,滿足從根節點到葉節點,值為sum
if (root->val == sum && !root->left && !root->right)
return haspathsum(root->left, sum - root->val) || haspathsum(root->right, sum - root->val);
}};複製**
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。...