题目简介:
计算给定二叉树的所有左叶子之和。
示例:
1 2 3 4 5 6 7
| 3 / \ 9 20 / \ 15 7
在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
|
思路:
在递归的时候设置一个flag
,只有当前结点为叶子结点且是上层结点的左孩子时才将结点值加入sum
中。
tip:
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
class Solution { public:
int sum = 0;
void dfs(TreeNode* root, int flag){
if(root == NULL) return; if(!root -> left && !root -> right && flag == 0) sum += root -> val;
dfs(root -> left, 0); dfs(root -> right, 1); }
int sumOfLeftLeaves(TreeNode* root) {
dfs(root, 1);
return sum; } };
|