算法
(DFS) $O(n)$
递归遍历二叉树的节点,判断当前节点是否有左儿子,进而判断左儿子是否为叶子节点。
C++ 代码
class Solution {
public:
int sumOfLeftLeaves(TreeNode* root) {
if (root != NULL) return search(root, 0);
return 0;
}
int search(TreeNode* root, int now) {
// 用now表示当前是左儿子还是右儿子
if (root->left == NULL && root->right == NULL) {
return now == 1 ? root->val : 0;
}
int sum = 0;
if (root->left != NULL)
sum += search(root->left, 1);
if (root->right != NULL)
sum += search(root->right, 0);
return sum;
}
};