一.问题描述 Sum of Left Leaves
问题描述二.问题解决
/**
* 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) {
int num=0;
if(!root){
return 0;
}
if(root->left && !root->left->left && !root->left->right){
num=root->left->val;
}
return num + sumOfLeftLeaves(root->left)+ sumOfLeftLeaves(root->right);
}
};
二叉树的题目,多用递归方法,重点在于找准跳出递归的出口,也就是真正的return的部分;
本题目的出口就在于一个是当节点为空的时候,返回0;
当节点的孩子的孩子为空的时候(说明此时是叶子节点),返回节点的左孩子的值;
当不是孩子不是叶子节点的时候,返回左子树左叶子值加上右子树节点的左孩子的值。
以上,继续加油啦。
网友评论