当前位置: 首页 > news >正文

2023-12-14 二叉树的最大深度和二叉树的最小深度以及完全二叉树的节点个数

二叉树的最大深度和二叉树的最小深度以及完全二叉树的节点个数

104. 二叉树的最大深度

在这里插入图片描述

思想:可以使用迭代法或者递归!使用递归更好,帮助理解递归思路!明确递归三部曲–①确定参数以及返回参数 ②递归结束条件 ③单层逻辑是怎么样的!
# 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 maxDepth(self, root: Optional[TreeNode]) -> int:# 确定递归的参数以及返回# 什么时候结束递归# 递归的单层逻辑是怎么样的def dp(node):if not node:return 0left_length = dp(node.left)right_length = dp(node.right)return 1 + max(left_length, right_length)return dp(root)

111. 二叉树的最小深度

在这里插入图片描述

思想:看似和最大深度相似,实则不同的!还需要考虑一个节点为None但是另一个不为None的情况!这个是关键!如果是参加面试最好使用迭代法来做,也就是广度优先遍历这样会更快更好理解【判断节点是否有左右节点即可】
# 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 minDepth(self, root: Optional[TreeNode]) -> int:# 使用递归的方法--参数为TreeNode 返回int;结束条件左右节点皆为None;单层逻辑;def deth_dp(node):if not node:return 0left_length = deth_dp(node.left)right_length = deth_dp(node.right)# 还需要判断目前是否已经是叶子节点了if not node.left and node.right:return 1 + right_lengthelif node.left and not node.right:return 1 + left_length# 最后都为None 直接比较返回就好了return 1 + min(left_length, right_length)return deth_dp(root)

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

在这里插入图片描述

思想:和最大深度很像,返回值等于左右节点相加即可!
# 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:def add_deth(node):if not node:return 0left_length = add_deth(node.left)right_length = add_deth(node.right)return 1 + left_length + right_lengthreturn add_deth(root)
http://www.lryc.cn/news/260413.html

相关文章:

  • 利用闭包与高阶函数实现缓存函数的创建
  • P1042 [NOIP2003 普及组] 乒乓球 JAVA 题解
  • 最大公因数,最小公倍数详解
  • 无脑利用API实现文心一言AI对话功能?(附代码)
  • 加速数据采集:用OkHttp和Kotlin构建Amazon图片爬虫
  • lua安装
  • 博士毕业需要发表几篇cssci论文
  • UDP报文格式详解
  • Python自动化测试如何自动生成测试用例?
  • 椋鸟C语言笔记#27:字符串数字提取(atoi、atol、atoll、atof)
  • Git 命令使用总结
  • Linux常见面试题30题详细答案解析(二)
  • Linux查询指定时间点段日志Linux查询指定文件
  • 2023年华为HCIA认证H12-811题库讲解
  • MacOS上配置Jenkins开机自启动
  • 指针相关知识(入门)
  • 我的NPI项目之Android 安全系列 -- Android Strongbox 初识
  • 3、Kafka 线上集群部署方案怎么做?
  • 【Oracle】常用数据库sql记录
  • 在线监控网址源码/ 网站监控工具源码/ 网站监控系统源码/定时任务/网站网址URL状态监控神器
  • 【Mysql】myisam和innodb的区别?
  • vue 集成行政区域选择插件region和数据回显
  • The LINQ expression “xxx“ could not be translated
  • ubuntu下搜索文件的几种方法
  • openCV图像SIFT特征
  • 黑豹程序员-axios+springmvc传递数组
  • 34.用过JavaConfig方式的spring配置吗?它是如何替代xml的?
  • 解析Python的Lambda函数:【理解】与【运用】
  • C语言:实现字符串连接
  • 物联网终端设备众多,为何遥测终端机备受瞩目?