437. 路径总和 III
这道题做了很多遍了,在字节训练营笔试做过,虽然那次只做对了两道题目
这是深度遍历,没什么好说的,每个结点都深度遍历一遍,用队列保存每个结点,依次遍历,想不到效率还行

查看代码
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
int pathSum(TreeNode* root, int targetSum) {
int number = 0;
if(root == nullptr){
return number;
}
queue<TreeNode* >s;
s.push(root);
while(!s.empty()){
TreeNode* temp = s.front();
if(temp->left !=nullptr){
s.push(temp->left);
}
if(temp->right!=nullptr){
s.push(temp->right);
}
s.pop();
count(temp,targetSum,number,0);
}
return number;
}
void count(TreeNode* root,int targetSum,int& number,int temp_num){
if(root == nullptr){
return;
}
if(temp_num+root->val==targetSum){
number++;
}
count(root->left,targetSum,number,temp_num+root->val);
count(root->right,targetSum,number,temp_num+root->val);
}
};

浙公网安备 33010602011771号