题目说明
计算给定二叉树的所有左叶子之和。
示例:
4
/ \
2 7
/ \
1 3
在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
题目说明
直接利用递归循环,加入判断是否为左节点即可。
代码
/**
* 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;
int res = 0;
//分步判断避免只有一个节点情况
leftSum(root->left, true, res);
leftSum(root->right, false, res);
return res;
}
void leftSum(TreeNode* node, bool isleft, int& res) {
if (!node) return;
//判断是否为左叶子节点
if (!node->left && !node->right && isleft) res += node->val;
leftSum(node->left, true, res);
leftSum(node->right, false, res);
}
};