404. 左叶子之和
1.题目描述
计算给定二叉树的所有左叶子之和。
示例:
2.思路
前序遍历二叉树,设置标志位isleft标记是否是左子节点,如果是,则把左子节点加到结果中。
3.代码
/**
* 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) {
return sumOfLeftLeaves(root,false);
}
int sumOfLeftLeaves(TreeNode* root, bool isleft){
if(root == NULL){
return 0;
}
int left_cout = 0;
if(isleft && root->left == NULL && root->right == NULL){
left_cout = root->val;
}
int left = sumOfLeftLeaves(root->left,true);
int right = sumOfLeftLeaves(root->right,false);
return left + right + left_cout;
}
};
4.复杂度分析
时间复杂度:O(n)
空间复杂度:O(n)