Leetcode 404. 左叶子之和
题目链接
https://leetcode.com/problems/sum-of-left-leaves/description/
题目描述
计算给定二叉树的所有左叶子之和。
示例:
3
/ \
9 20
/ \
15 7
在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
题解
用一个变量来保存当前节点是否是左子节点,如果当前节点是左子节点,在判断该节点是否是叶子节点,如果是就累加。
代码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int sumOfLeftLeaves(TreeNode root) {
return find(root, root);
}
public int find(TreeNode root, TreeNode cur) {
if (cur == null) { return 0; }
if (cur.left == null && cur.right == null && root.left == cur) {
return cur.val + find(cur, cur.left) + find(cur, cur.right);
}
return find(cur, cur.left) + find(cur, cur.right);
}
}