[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


<<:  Flutter基础介绍与实作-Day29 旅游笔记的实作(10)

>>:  企业资料通讯Week4 (1) | Socket &TCP & UDP

[Golang]select 语句的分支选择规则-心智图总结

1. select语句的case表达式,都会在选择之前,先被求值。 2. case表达式,求值的顺序...

新手应该要学什麽程序语言?

Photo by Victoriano Izquierdo on Unsplash 文章同步发布於...

[Day 19] Reactive Programming - Reactor (operator fusion)

前言 这篇挣扎了很久要不要写,算是进阶一点的主题,内容虽然不多,但已经让我绞尽脑汁,关於这个主题我自...

.Net Core Web Api_笔记22_Swagger自订文件并读取API注解描述

Swagger刚开始可以将其理解成网页版本的postman 我们可以对其测试发送资料看回传结果 在预...

[DAY 20]用bot打出色色柴犬counter牌(更新句子相似度判断)

原本以为色色柴犬counter功能不会再更新了 直到discord上来了这样一段 哇他们这样玩还没触...