標籤:
Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.
For example:
Given the below binary tree and sum = 22,
5 / 4 8 / / 11 13 4 / \ / 7 2 空 1
return true, as there exist a root-to-leaf path 5->4->11->2 which sum is 22.
從Root結點->遍曆到葉子結點 找出sum跟遍曆的總和相同 返回真 or 假
Leetcode
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/bool hasPathSum(TreeNode *root, int sum){return PathSum(root,sum,0);}bool PathSum(TreeNode *root,int sum,int val){if(root==NULL) return false;//如果給出的根節點為空白則返回假 當遞迴到 樹的第三層 4的時候 會觸發FALSEval+=root->val;//不為空白 則將當前遞迴 節點的val 值進行+=操作if(root-left== NULL&&root->right==NULL)//遞迴到葉子結點 { if(sum==val) return true;else false; }return PathSum(root->left,sum,val)||PathSum(root->right,sum,val);//如果當前遞迴到非葉子結點 則繼續遞迴調用 結點的 左 右 兩個孩子結點}
廣度 深度 搜尋 的變化 還是多樣的 要多多瞭解這些思想 跟方法
LeetCode Path Sum