题目
计算给定二叉树的所有左叶子之和。 如果是下面的树,只有一个左叶子结点4
思考分析
由此我们可以得到左叶子结点的定义: cur->left !=NULL && cur->left->left==NULL && cur->left->right==NULL
递归遍历+累积操作
class Solution {
public:
int result
;
void traversal(TreeNode
* cur
)
{
if(cur
== NULL) return;
if(cur
->left
!=NULL && cur
->left
->left
==NULL && cur
->left
->right
==NULL) result
+=cur
->left
->val
;
traversal(cur
->left
);
traversal(cur
->right
);
}
int sumOfLeftLeaves(TreeNode
* root
) {
result
=0;
if(root
== NULL) return result
;
traversal(root
);
return result
;
}
};
广度遍历+累积操作
class Solution {
public:
int sumOfLeftLeaves(TreeNode
* root
) {
int result
=0;
if(root
== NULL) return result
;
queue
<TreeNode
*> que
;
if(root
!=NULL) que
.push(root
);
while(!que
.empty())
{
int size
= que
.size();
for(int i
=0;i
<size
;i
++)
{
TreeNode
* node
= que
.front();
que
.pop();
if(node
->left
&& node
->left
->left
==NULL && node
->left
->right
==NULL)
{
result
+=node
->left
->val
;
}
if(node
->left
) que
.push(node
->left
);
if(node
->right
) que
.push(node
->right
);
}
}
return result
;
}
};