day17
用一个标志位记录是 左节点还是 右节点。
注意:
1. 这里判断是否为左叶子需要在 遍历到其父结点的时候进行标记。
2.symbol 默认为 false。因为刚传入根节点的时候,有可能其左右结点都会空。要确保这种i情况下,不会讲 数值 加进去。
class Solution {
public:
int sum = 0;
bool symbol = false;
void traversal(TreeNode* cur){
if(cur->left == nullptr && cur->right == nullptr){
if(symbol) sum += cur->val;
return;
}
if(cur->left){
symbol = true;
traversal(cur->left);
}
if(cur->right){
symbol = false;
traversal(cur->right);
}
}
int sumOfLeftLeaves(TreeNode* root) {
if(root == nullptr) return 0;
traversal(root);
return sum;
}
};