題目
給定一個二叉樹和一個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。
說明: 葉子節點是指沒有子節點的節點。
示例:
給定如下二叉樹,以及目標和 sum = 22,
5
/ \
4 8
/ / \
11 13 4
/ \ \
7 2 1
返回 true,因爲存在目標和爲 22 的根節點到葉子節點的路徑 5->4->11->2。
函數原型
C
的函數原型:
bool hasPathSum(struct TreeNode* root, int sum){}
邊界判斷
bool hasPathSum(struct TreeNode* root, int sum){
if( root == NULL )
return false;
}
算法設計:遞歸
bool hasPathSum(struct TreeNode* root, int sum){
if( root == NULL ) // 空樹
return false;
if( root->left == NULL && root->right == NULL ) // 走到葉子🍃結點(無孩子)
return (root->val - sum) == 0;
return hasPathSum(root->left, sum - root->val)
|| hasPathSum(root->right, sum - root->val);
}
- 時間複雜度:
- 空間複雜度: