algorithm notes: leetcode#404 sum of left leaves

Problem


Solution


Initial thoughts

Python implementation

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class :
def sumOfLeftLeaves(self, root):
"""
:type root: TreeNode
:rtype: int
"""
def dfs(node, is_left):
if not node:
return 0
if not node.left and not node.right:
if is_left:
return node.val
return 0
return dfs(node.left, True) + dfs(node.right, False)
return dfs(root, False)

Java implementation

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class {
private int dfs(TreeNode node, boolean isLeft){
if(node == null){ return 0; }
if(node.left == null && node.right == null){
if(isLeft){ return node.val; }
return 0;
}
return dfs(node.left, true) + dfs(node.right, false);
}
public int sumOfLeftLeaves(TreeNode root) {
return dfs(root, false);
}
}

Time complexity

O(n).

Space complexity

O(1).


404. Sum of Left Leaves
(中文版) 算法笔记: 力扣#404 左叶子之和