题目描述:
计算给定二叉树的所有左叶子之和。
示例:
3
/
9 20
/
15 7
在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
思路:
递归,对于每个节点分情况进行讨论
如果当前节点的左节点的没有左右孩子,则该节点是左叶子,相加
反之,递归该节点的左右节点
代码如下:
C++:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int sumOfLeftLeaves(TreeNode* root) {
if(!root) return 0;
else if(root->left==NULL) return sumOfLeftLeaves(root->right);
else if(root->left->left==NULL&&root->left->right==NULL){
return root->left->val+sumOfLeftLeaves(root->right);
}
else return sumOfLeftLeaves(root->left)+sumOfLeftLeaves(root->right);
}
};
python:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def sumOfLeftLeaves(self, root: TreeNode) -> int:
if root==None: return 0
if root.left and root.left.right==None and root.left.left==None: return root.left.val+self.sumOfLeftLeaves(root.right)
else: return self.sumOfLeftLeaves(root.left)+self.sumOfLeftLeaves(root.right)