算法笔记: 力扣#404 左叶子之和

问题描述


解法


分析

Python 实现

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 实现

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);
}
}

时间复杂度

O(n).

空间复杂度

O(1).

链接


404. Sum of Left Leaves
404. 左叶子之和
(English version) Algorithm Notes: Leetcode#404 Sum of Left Leaves