//关键在于和根节点的关系
class Solution {
public:
int sumOfLeftLeaves(TreeNode* root) {
int sum = 0;
int flag = -1;//表示根节点
Haha(root, sum, flag);
return sum;
}
void Haha(TreeNode* root, int &sum, int flag) {
if (!root) return;
if (flag == 1 && !root->left && !root->right) {
sum += root->val;
return;
}
if (root->left)
Haha(root->left,sum,1);
if (root->right)
Haha(root->right,sum,0);
}
};
发生了一件非常诡异的事情,为什么在flag前面加上&结果就不正确了
//关键在于和根节点的关系
class Solution {
public:
int sumOfLeftLeaves(TreeNode* root) {
int sum = 0;
int flag = -1;//表示根节点
Haha(root, sum, flag);
return sum;
}
void Haha(TreeNode* root, int &sum, int &flag) {
if (!root) return;
if (flag == 1 && !root->left && !root->right) {
sum += root->val;
return;
}
if (root->left)
Haha(root->left,sum,1);
if (root->right)
Haha(root->right,sum,0);
}
};