左叶子之和使用前序遍历寻找左叶子。
左叶子的判断:
- root->left存在而且root->left->left和root->left->right为null
代码:
class Solution {
public:
vector path;
void findLeft(TreeNode* root){
if (root == nullptr) return;
// 1 找到左叶子
if (root->left && root->left->left==nullptr && root->left->right == nullptr) path.push_back(root->left->val);
// 2 遍历
if (root->left) findLeft(root->left);
if (root->right) findLeft(root->right);
}
int sumOfLeftLeaves(TreeNode* root) {
if (root==nullptr) return 0;
findLeft(root);
int total = 0;
for(auto p:path) total += p;
return total;
}
};