
404 左叶子之和(递归标记)
发布日期:2021-05-07 21:54:08
浏览次数:24
分类:精选文章
本文共 1054 字,大约阅读时间需要 3 分钟。
1. 问题描述:
计算给定二叉树的所有左叶子之和。
示例:
3 / \ 9 20 / \ 15 7
在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
2. 思路分析:
① 对于二叉树的题目都是可以使用递归来解决的,对于这道题目也是如此,分析题目可以知道左叶子节点需要满足两个条件,第一个点是叶子节点,第二个点是左节点,对于第一个条件很容易判断,我们在递归出口的时候判断当前的节点是否是叶子节点即可,对于第二个点,我们可以在方法中使用一个变量来标记当前的节点是左节点还是右节点即可,这样在递归到当前节点的时候就可以判断出来了,这里可以画出一棵具体的二叉树会非常好理解
② 我们在编写程序的时候可以根据具体的例子来编写出大体的代码,这样会很快确定数据的范围与边界,然后根据题目中的要求进一步完善代码即可
3. 代码如下:
class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = Noneclass Solution: def sumOfLeftLeaves(self, root: TreeNode) -> int: res = 0 # f为是左孩子还是右孩子的标志 def dfs(root: TreeNode, f: int): if not root: return # 叶子节点 if not root.left and not root.right: # 判断是否是左节点 if f == 0: nonlocal res res += root.val return dfs(root.left, 0) dfs(root.right, 1) if not root: return 0 if not root.left and not root.right: return 0 dfs(root, 0) return res
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年04月17日 08时27分59秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
使用sqlserver 查询不连续的数据
2019-03-05
用div+css+html+js 实现图片放大
2019-03-05
(原创)在Linux上安装运行Python3(CentOS7为例)
2019-03-05
变量覆盖漏洞
2019-03-05
weblogic之cve-2015-4852
2019-03-05
Java注释
2019-03-05
水调歌头·1024
2019-03-05
C++ 函数重载
2019-03-05
Nginx简介
2019-03-05
Nginx的Gzip功能
2019-03-05
Azure Storage 系列(四)在.Net 上使用Table Storage
2019-03-05
abstract关键字的使用
2019-03-05
算法题:获取一个字符串在另一个字符串中出现的次数
2019-03-05
算法题:获取两个字符串中的最大相同子串
2019-03-05
Asp.Net Core&Jenkins持续交付到Windows Server
2019-03-05
自我总结和学习表单提交的几种方式 (一)
2019-03-05
.NET微信网页开发之使用微信JS-SDK调用微信扫一扫功能
2019-03-05
.NET微信网页开发之使用微信JS-SDK获取当前地理位置
2019-03-05
Python写代码的时候为什么要注释?Sun因此被Oracle收购
2019-03-05