404. Sum of Left Leaves
Description
Find the sum of all left leaves in a given binary tree.
Example: 3 / \ 9 20 / \ 15 7 There are two left leaves in the binary tree, with values 9 and 15 respectively. Return 24.
Solution
- 题意即求和作为左子树的叶子结点的值。
- 整体解题思想是遍历但是不遍历右叶子,如果当前是叶子结点,那么一定是左叶子,那么累和。
- 我采用的是中序遍历的方式,对于左子树遍历,可以放心大胆,因为不会遍历到右叶子,然后判断当前根节点,如果是叶子那么累和,对于右子树遍历,需要确认该右子树不是叶节点才能继续遍历,代码如下。
class Solution {
public:
int rnt = 0;
void travel(TreeNode *root) {
if (!root) return ;
travel(root->left);
if (!root->left && !root->right) rnt += root->val;
if ((root->right) && (root->right->left || root->right->right)) travel(root->right);
}
int sumOfLeftLeaves(TreeNode* root) {
if (!root || (!root->left && !root->right)) return 0;
travel(root);
return rnt;
}
};