Day 15 卡玛笔记

embedded/2025/1/23 18:33:20/

这是基于代码随想录的每日打卡

222. 完全二叉树的节点个数

给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。

完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层(从第 0 层开始),则该层包含 1~ 2h 个节点。

示例 1:

img

输入:root = [1,2,3,4,5,6]
输出:6

示例 2:

输入:root = []
输出:0

示例 3:

输入:root = [1]
输出:1

递归法

python"># 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 countNodes(self, root: Optional[TreeNode]) -> int:if root==None:return 0def count_node(node):# 终止条件:节点为None返回0if node==None:return 0# 处理单层逻辑leftnum=count_node(node.left)	# 左孩子数量rightnum=count_node(node.right)	# 右孩子数量return 1+leftnum+rightnumreturn count_node(root)

运行结果

在这里插入图片描述



110. 平衡二叉树

给定一个二叉树,判断它是否是平衡二叉树

示例 1:

img

输入:root = [3,9,20,null,null,15,7]
输出:true

示例 2:

img

输入:root = [1,2,2,3,3,null,null,4,4]
输出:false

示例 3:

输入:root = []
输出:true

递归法

python"># 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 isBalanced(self, root: Optional[TreeNode]) -> bool:def getHeight(node):# 递归终止条件if node==None:return 0# 单层逻辑# 左子树高度left=getHeight(node.left)# 如果左子树返回-1,则当层直接返回-1if left==-1:return -1# 右子树高度right=getHeight(node.right)# 如果右子树返回-1,则当层直接返回-1if right==-1:return -1# 如果左右子树都符合条件,计算整体是否符合条件if abs(left-right)>1:# 如果不符合条件返回给上层-1return -1else:# 如果符合条件,则返回当前节点高度给上一层return 1+max(left,right)res=getHeight(root)if res!=-1:return Trueelse:return False

运行结果

在这里插入图片描述



404. 左叶子之和

给定二叉树的根节点 root ,返回所有左叶子之和。

示例 1:

img

输入: root = [3,9,20,null,null,15,7] 
输出: 24 
解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24

示例 2:

输入: root = [1]
输出: 0

递归法

python"># 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:def Count(node):# 递归终止条件if node==None:return 0# 处理单层逻辑# 计算左子树的左叶子之和if node.left!=None and node.left.left==None and node.left.right==None:leftvalue=node.left.valelse:leftvalue=Count(node.left)# 计算右子树的左叶子之和rightvalue=Count(node.right)return leftvalue+rightvaluereturn Count(root)

运行结果

在这里插入图片描述



257. 二叉树的所有路径

给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。

叶子节点 是指没有子节点的节点。

示例 1:

img

输入:root = [1,2,3,null,5]
输出:["1->2->5","1->3"]

示例 2:

输入:root = [1]
输出:["1"]

递归法

python"># 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 binaryTreePaths(self, root: Optional[TreeNode]) -> List[str]:res=[]path=[]def traversal(node,res,path):# 终止条件# 当走到叶子节点时就是终点了if node.left==None and node.right==None:path.append(node.val)res.append('->'.join(map(str,path)))return# 递归逻辑path.append(node.val)if node.left:traversal(node.left,res,path)# 回溯path.pop()if node.right:traversal(node.right,res,path)# 回溯path.pop()traversal(root,res,path)return res

运行结果

在这里插入图片描述

有问题欢迎评论或私信


http://www.ppmy.cn/embedded/156367.html

相关文章

docker设置开机自启操作

一&#xff1a;开启自启服务文件配置 1&#xff1a;docker.socket sudo tee /usr/lib/systemd/system/docker.socket <<EOF [Unit] DescriptionDocker Socket for the API [Socket] ListenStream/var/run/docker.sock SocketMode0660 SocketUserroot SocketGroupdocker…

深圳大学-计算机系统(3)-实验三取指和指令译码设计

实验目标 设计完成一个连续取指令并进行指令译码的电路&#xff0c;从而掌握设计简单数据通路的基本方法。 实验内容 本实验分成三周&#xff08;三次&#xff09;完成&#xff1a;1&#xff09;首先完成一个译码器&#xff08;30分&#xff09;&#xff1b;2&#xff09;接…

解决MAC安装软件时提示“xxx.app 显示已损坏”的方法

新入手的苹果电脑打开软件出现&#xff1a;“已损坏&#xff0c;无法打开。您应该将它移到废纸娄” 或 “已损坏&#xff0c;打不开。推出磁盘映像”。这个怎么解决&#xff1f; 第一部分&#xff1a;&#xff08;注意&#xff1a;任何来源打开过了的&#xff0c;就直接去看下…

stm8s单片机(二)外部中断实验

中断优先级 stm8的中断优先级不是固定不变的&#xff0c;stm8的中断分为硬件优先级与软件优先级&#xff1b;当多个中断发生时&#xff0c;cpu会先响应软件优先级高的中断&#xff0c;若软件优先级相同会先响应硬件优先级高的&#xff1b; 其中软件优先级有四个 /*** brief …

html全局遮罩,通过websocket来实现实时发布公告

1.index.html代码示例 <div id"websocket" style"display:none;position: absolute;color:red;background-color: black;width: 100%;height: 100%;z-index: 100; opacity: 0.9; padding-top: 30%;padding-left: 30%; padding-border:1px; "onclick&q…

JAVA实战开源项目:课程作业管理系统(Vue+SpringBoot) 附源码

本文项目编号 T 023 &#xff0c;文末自助获取源码 \color{red}{T023&#xff0c;文末自助获取源码} T023&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

Java中面向对象的面试试题及答案解析

Java 的面向对象是一种编程思想&#xff0c;它将现实世界的事物抽象为“对象”&#xff0c;并通过类和对象来实现对数据的封装和行为的定义。以下是关于 Java 面向对象的具体解释&#xff1a; 基本概念 对象&#xff1a;是程序中的基本构建块&#xff0c;表示现实世界中的实体或…

记录一次 centos 启动失败

文章目录 现场1分析1现场2分析2搜索实际解决过程 现场1 一次断电,导致 之前能正常启动的centos 7.7 起不来了有部分log , 关键信息如下 [1.332724] XFS(sda3): Internal error xfs ... at line xxx of fs/xfs/xfs_trans.c [1.332724] XFS(sda3): Corruption of in-memory data…