iT邦幫忙

2021 iThome 鐵人賽

DAY 29
0
Software Development

都是 P 開頭的程式語言,你是在 py 啥啦系列 第 29

[29] 用 python 刷 Leetcode: 404

原始題目

Given the root of a binary tree, return the sum of all left leaves.

Example 1:

leftsum-tree

Input: root = [3,9,20,null,null,15,7]
Output: 24
Explanation: There are two left leaves in the binary tree, with values 9 and 15 respectively.

Example 2:

Input: root = [1]
Output: 0

Constraints:

  • The number of nodes in the tree is in the range [1, 1000].
  • -1000 <= Node.val <= 1000

題目分析

判斷一個二元樹的左子葉總和

把每個節點送進遞迴函數裡面取得該節點的左節點,並且送進同一個函數取得更深入的左節點
如果傳入節點的左節點不為空,且該節點的左節點沒有更深入的左節點
而且該節點的左節點的右節點為空,則找到了一個左子葉

判斷式長得像:

if (node->left != NULL && node->left->left == NULL && node->left->right == NULL) {
    找到左子葉
}

解題過程

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def sumOfLeftLeaves(self, root: Optional[TreeNode]) -> int:
        if not root: 
            return 0
        
        left_left_leaves_sum = self.sumOfLeftLeaves(root.left)
        right_left_leaves_sum = self.sumOfLeftLeaves(root.right)
        
        cur_left_leaf_val = 0
        if root.left and not root.left.left and not root.left.right: 
            cur_left_leaf_val = root.left.val
            
        return cur_left_leaf_val + left_left_leaves_sum + right_left_leaves_sum

結果

result


上一篇
[28] 用 python 刷 Leetcode: 1013
下一篇
[30] 參賽心得
系列文
都是 P 開頭的程式語言,你是在 py 啥啦30

尚未有邦友留言

立即登入留言