C++描述 LeetCode 112. 路徑總和
??大家好,我叫亓官劼(qí guān jié ),在CSDN中記錄學習的點滴歷程,時光荏苒,未來可期,加油~博主目前僅在CSDN中寫博客,唯一博客更新的地址為:亓官劼的博客 ,同時正在嘗試在B站中做一些內容分享,B站主頁為: 亓官劼的B站主頁
本文原創為亓官劼,請大家支持原創,部分平臺一直在惡意盜取博主的文章!!!
若需聯系博主,可以聯系本人微信:qiguanjie2015
給定一個二叉樹和一個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等于目標和,
說明: 葉子節點是指沒有子節點的節點,
示例:
給定如下二叉樹,以及目標和 sum = 22,
5
/ \
4 8
/ / \
11 13 4
/ \ \
7 2 1
回傳 true, 因為存在目標和為 22 的根節點到葉子節點的路徑 5->4->11->2,
遞回解法
我們可以從根結點遞回的向下求解,當且僅當到葉子結點且當且val為當前剩余的sum時,為true,否則為false,如果當前不是葉子結點,就繼續向下搜索,如果是葉子結點就判斷當前葉子結點是否滿足,
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
bool hasPathSum(TreeNode* root, int sum) {
if(root == NULL)
return false;
if(root->right == NULL && root->left == NULL){
if(sum == root->val)
return true;
else
return false;
}
return hasPathSum(root->right,sum - root->val) || hasPathSum(root->left,sum - root->val);
}
};
CSDN認證博客專家
Python
全堆疊
資料結構與演算法
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/242469.html
標籤:其他
