首页 > 其他分享 >104.二叉树的最大深度

104.二叉树的最大深度

时间:2023-10-31 18:23:48浏览次数:36  
标签:tmp node 遍历 queue 二叉树 深度 root 节点 104

目录

题目

  • 给定一个二叉树 root ,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。

示例 1:

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

示例 2:

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

法一、后序遍历

  • 后序遍历+递归实现:此树的深度 等于 左子树的深度 与 右子树的深度中的 最大值+1
class Solution:
    def maxDepth(self, root: Optional[TreeNode]) -> int:
        if not root: return 0   #终止条件: 当 root​ 为空,说明已越过叶节点,因此返回 深度0
        return max(self.maxDepth(root.left), self.maxDepth(root.right)) + 1

法二、层序遍历

  • 每遍历一层,则计数器 +1 ,直到遍历完成,则可得到树的深度。
class Solution:
    def maxDepth(self, root: TreeNode) -> int:
        if not root: return 0  #当 root​ 为空,直接返回 深度0 
        queue, res = [root], 0 #初始化队列(加入根节点root),计数器res=0
        while queue:#当队列不空时执行:
            tmp = []   #初始化一个空列表 tmp ,用于临时存储下一层节点。
            for node in queue:   #遍历 queue 中的各节点 node
                if node.left: tmp.append(node.left)  #左子节点加入 tmp
                if node.right: tmp.append(node.right)   #右子节点加入 tmp
            queue = tmp  #将下一层节点赋值给 queue
            res += 1  #层数加 1
        return res

标签:tmp,node,遍历,queue,二叉树,深度,root,节点,104
From: https://www.cnblogs.com/lushuang55/p/17800935.html

相关文章

  • ElasticSearch深度解析入门篇:高效搜索解决方案的介绍与实战案例讲解,带你避坑
    ElasticSearch深度解析入门篇:高效搜索解决方案的介绍与实战案例讲解,带你避坑1.Elasticsearch产生背景大规模数据如何检索如:当系统数据量上了10亿、100亿条的时候,我们在做系统架构的时候通常会从以下角度去考虑问题:1)用什么数据库好?(mysql、oracle、mongodb、hbase…)2)如......
  • [Leetcode] 0111. 二叉树的最小深度
    111.二叉树的最小深度题目描述给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。 示例1:输入:root=[3,9,20,null,null,15,7]输出:2示例2:输入:root=[2,null,3,null,4,null,5,null,6]输......
  • 刘老师《Pytorch深度学习实践》第三讲:梯度下降
    1.分治法不能用局部点干扰性大2.梯度下降3.随机梯度下降随机梯度下降法(StochasticGradientDescent,SGD):由于批量梯度下降法在更新每一个参数时,都需要所有的训练样本,所以训练过程会随着样本数量的加大而变得异常的缓慢。随机梯度下降法正是为了解决批量梯度下降法这一......
  • 基于Googlenet深度学习网络的矿物质种类识别matlab仿真
    1.算法运行效果图预览   2.算法运行软件版本matlab2022a 3.算法理论概述       VGG在2014年由牛津大学著名研究组vGG(VisualGeometryGroup)提出,斩获该年lmageNet竞赛中LocalizationTask(定位任务)第一名和ClassificationTask(分类任务)第二名。Clas......
  • 代码随想录训练营第二十天打卡(Python)| 654.最大二叉树 、617.合并二叉树 、700.二叉搜
    654.最大二叉树1、使用切片classSolution:defconstructMaximumBinaryTree(self,nums:List[int])->Optional[TreeNode]:iflen(nums)==0:returnNonemax_val=max(nums)max_index=nums.index(max_val)node=T......
  • 代码随性训练营第十七天(Python)| 110.平衡二叉树、257. 二叉树的所有路径、404.左叶子之
    110.平衡二叉树1、递归法classSolution:defisBalanced(self,root:Optional[TreeNode])->bool:ifself.get_height(root)!=-1:#-1代表高度差大于1returnTrueelse:returnFalsedefget_height(self,root):......
  • 二叉树概念和操作
    二叉树定义二叉树(BinaryTree)是n(n>=0)个结点所构成的集合,它或为空树(n=0);或为非空树,对于非空树$T$:有且仅有一个称之为根的结点除根节点以外的其余结点分为两个互不相交的子集$T_1$和$T_2$,分别称为$T$的左子树和右子树,且$T_1$和$T_2$本身又是二叉树二叉树性质及存储结构通过......
  • 平衡二叉树AVL
    在计算机科学中,AVL树是最早被发明的自平衡二叉查找树。在AVL树中,任一节点对应的两棵子树的最大高度差为1,因此它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下的时间复杂度都是$O(logn)$。所以我们可知,AVL树首先是二叉查找树(BST),不了解BST的同学可以了解一下,因为AVL树......
  • 深度学习之手写数字识别
    1、安装库各位小伙伴们,大家好,今天就让我们一起来看一下使用python实现深度学习中的手写数字识别,首先咱们需要安装几个库文件,numpy库、matplotlib库和tensorflow库。可以打开命令行进行安装,也可以再PyCharm下的命令行安装,建议在PyCharm下的命令行进行安装,因为我有许多同学在cmd控制......
  • C++U5-深度优先搜索-03(记忆化搜索、剪枝和优化)
    ......