Day17| 110.平衡二叉树、 257. 二叉树的所有路径 、 404.左叶子之和

news/2025/1/22 12:38:01/文章来源:https://www.cnblogs.com/forrestr/p/18238067

110.平衡二叉树 (优先掌握递归)

再一次涉及到,什么是高度,什么是深度,可以巩固一下。

题目链接/文章讲解/视频讲解:https://programmercarl.com/0110.平衡二叉树.html

# 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
def max_depth(root):if root is None:return 0 return max(max_depth(root.left),max_depth(root.right)) + 1
class Solution:def isBalanced(self, root: Optional[TreeNode]) -> bool:if root is None:return Trueif abs(max_depth(root.left) -  max_depth(root.right)) > 1:return Falseelse:return self.isBalanced(root.left) and self.isBalanced(root.right)

思考

前序遍历可以求二叉树节点的深度(要回溯),后序遍历可以求二叉树节点的的高度。
深度是节点到根节点的长度。高度是节点到叶子节点的长度。根节点的高度是N,深度是1
二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数。
二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数。

257. 二叉树的所有路径 (优先掌握递归)

这是大家第一次接触到回溯的过程, 我在视频里重点讲解了 本题为什么要有回溯,已经回溯的过程。

如果对回溯 似懂非懂,没关系, 可以先有个印象。

题目链接/文章讲解/视频讲解:https://programmercarl.com/0257.二叉树的所有路径.html

思考

前序遍历+回溯,注意返回结果需要定义成类的成员变量或者函数参数。定义成全局变量,leetcode的第二个用例不会清空的。

class Solution:def __init__(self):self.res_all = []self.res = []def binaryTree_rec(self,root):self.res.append(root.val)if root.left is None and root.right is None:temp_str = '->'.join(map(str,self.res))self.res_all.append(temp_str)return if root.left:self.binaryTree_rec(root.left)self.res.pop()if root.right:self.binaryTree_rec(root.right)self.res.pop()def binaryTreePaths(self, root: Optional[TreeNode]) -> List[str]:if root is None:return self.res_allself.binaryTree_rec(root)return self.res_all

404.左叶子之和 (优先掌握递归)

其实本题有点文字游戏,搞清楚什么是左叶子,剩下的就是二叉树的基本操作。

题目链接/文章讲解/视频讲解:https://programmercarl.com/0404.左叶子之和.html

思考

这道题一点也不简单,需要推导出左叶子的明确定义:节点A的左孩子不为空,且左孩子的左右孩子都为空(说明是叶子节点),那么A节点的左孩子为左叶子节点

# 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 root is None:return 0if root.left is None and root.right is None:return 0if root.left and root.left.left is None and root.left.right is None:left_value = root.left.valelse:left_value = self.sumOfLeftLeaves(root.left)right_value = self.sumOfLeftLeaves(root.right)return left_value + right_value

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/721664.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024.6.7

18万条数据public class HotCategoryTop10_3 {public static void main(String[] args) {// TODO 搭建Spark的运行环境SparkConf conf = new SparkConf();conf.setAppName("HotCategoryTop10");conf.setMaster("local[*]"); // Yarn : Spark On YarnJavaSp…

Android Media Framework(三)OpenMAX API阅读与分析

这篇文章我们将聚焦Control API的功能与用法,为实现OMX Core、Component打下坚实的基础。1、OMX_Core.h OMX Core在OpenMAX IL架构中的位置位于IL Client与实际的OMX组件之间,OMX Core提供了两组API给IL Client使用,一组API用于管理OMX组件,另一组API用于操作/使用创建的OM…

Java (Redis)

前沿 让我们来学习下Redis吧官网下载客户端 https://app.redislabs.com/#/rlec-downloads什么是 Redis?Redis(Remote Dictionary Server)是一个开源的、高性能的、基于内存的键值存储系统。它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。由于其基于内存的设…

NSSCTF——crypto

[鹤城杯 2021]easy_crypto [强网拟态 2021]拟态签到题 [SWPUCTF 2021 新生赛]crypto8[SWPUCTF 2021 新生赛]crypto7[SWPUCTF 2021 新生赛]crypto6[SWPUCTF 2021 新生赛]ez_caesar[SWPUCTF 2021 新生赛]…

攻防世界

misc 1.MeowMeowMeow 首先是是一个猫猫的图片,习惯先看看属性,放入hex中,发现一些特殊的符合继续往上翻,发现有一段密码用base64解码,得到提示Do you know what Ascii art is? Hint:I put the serect in a 01 Ascii art.像这样的艺术字,发现下面编码有点像字母 解出来是…

__init__.py

在Python的项目中,通常会看到__init__.py文件,当我们导入这个项目时,会优先执行该项目的__init__.py文件。当我们导入这个项目。或者这个项目的子模块时,都会优先执行该项目下的__init__.py文件。 该过程有缓存机制,连续导入一个父模块的不同子模块时,只会执行一次父模块…

PHP历理 PhpStorm的设置PHP版本

打开 文件 -> 设置 -> PHP -> 选择对应的PHP版本

客观谈谈上一中 or 凤城

首先是一个问题,为什么在一中各方面似乎都要强于凤城的情况下,还是会有许多人想去上凤城呢? 很简单,凤城给的实在是太多了( 只要你足够优秀,凤城似乎可以满足你大部分要求,有很多优惠条件,并且老师水平也不一定比一中差多少,还有高校专项计划诱人的降分,助力实现梦想…

AD给线周围铺铜只显示框的问题

如下图所示,想给直角线加斜边的铜,但是加完之后只有框没有铜(也选择了网络)解决方法如下: 点击这个框,在属性里面取消勾选Remove Islands Less Than 再选择Pour Over All Same Net Objects即可

Dragon_Knight_CTF-stack(栈迁移)

Dragon_Knight_CTF-stack(栈迁移) 程序的保护情况如下,可以看到没有开启pie保护 Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x3fe000)可以看道main函数也很简洁,只有一个0x10大小的溢出,程序…

成为MySQL DBA后,再看ORACLE数据库(七、日志体系)

说起数据库的日志,一般有redo日志、归档日志、错误日志、审计日志等,不同的数据库为了满足其特定的功能会有不同类型的日志。在ORACLE的日常运维中,可能接触得最多的就是redo日志、归档日志、告警日志、闪回日志这几种日志。在ORACLE知识体系中,一般把redo、undo、checkpoi…

bitbucket无法使用ssh连接

原因 如图所示,需要开启pipelines而开启pipelines需要通过Twilio Authy Authenticator这个软件。然而国内手机号收不到这玩意的验证码。未解决 放弃了,直接用http