leetcode 404. 左叶子之和
计算给定二叉树的所有左叶子之和。
示例:
3
/
9 20
/
15 7
在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
递归三部曲
参数和返回值:返回值为左叶子点之和 int
单层逻辑:当前节点的左叶子点 + 当前节点的左右子树的左叶子点之和
终止条件: 当前节点为空;(这里当前节点的左孩子为叶子节点就没必要继续判断它的左孩子了,可以节省一步)
int count = 0;
int sumOfLeftLeaves(TreeNode* root) {
if(root == nullptr)
return 0;
TreeNode* leftNode = root->left;
if(leftNode && !leftNode->left && !leftNode->right)
{
count += leftNode->val;
sumOfLeftLeaves(root->right);
}
else
{
sumOfLeftLeaves(root->left);
sumOfLeftLeaves(root->right);
}
return count;
}