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

104.二叉树的最大深度

题目:

给定一个二叉树 root ,返回其最大深度。

二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。

示例 1:

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

示例 2:

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

提示:

  • 树中节点的数量在 [0, 104] 区间内。
  • -100 <= Node.val <= 100

解题思路:

使用深度优先搜索的思想,用栈存储当前的节点地址和节点的深度,如果遍历到树叶节点就将栈顶元素输出,height返回到上一节点的深度

使用广度优先搜索的思想,用队列存储每一层节点

DFS代码:

# 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) -> int:
        if not root:
            return 0
        stack = []
        height = 0
        current = root
        max_height = 0
        while current or stack:
            while current:
                height+=1
                stack.append((current, height))
                current = current.left
            max_height = max(height, max_height)
            current = stack[-1][0]
            height = stack[-1][1]
            stack.pop()
            current = current.right
        return max_height

这里可以使用递归的思想来做深度优先搜索

递归DFS代码:

class Solution:
    def maxDepth(self, root) -> int:
        if not root:
            return 0
        else:
            left_height = self.maxDepth(root.left)
            right_height = self.maxDepth(root.right)
            return max(left_height, right_height)+1

BFS代码:

import queue
class Solution:
    def maxDepth(self, root) -> int:
        if not root:
            return 0
        tree_queue = queue.Queue()
        height = 0
        tree_queue.put(root)
        while not tree_queue.empty():
            length = tree_queue.qsize()
            while length>0:
                current = tree_queue.get()
                if current.left:
                    tree_queue.put(current.left)
                if current.right:
                    tree_queue.put(current.right)
                length-=1
            height+=1
        return height

相关文章:

  • ngx_http_index_set_index
  • 【逆向】国家能源局gm2
  • 一套云HIS系统源码,系统融合HIS与EMR,基于云端部署,采用B/S架构与SaaS模式
  • Flutter项目之table页面实现
  • Rust从入门到精通之进阶篇:19.Rust 生态系统
  • 欧拉筛/线性筛素数(数论)
  • 【MySQL | 七、存储引擎是什么?】
  • 安卓应用市场认领应用-签名详细步骤
  • 工业控制PSRAM存储解决方案
  • Deepseek API+Python 测试用例一键生成与导出 V1.0.3
  • 如何入门 Postman?快速了解其功能与用途
  • 基于网启PXE服务器的批量定制系统平台
  • Java学习打卡-Day20-Comparable接口与Comparator接口
  • java基础自用笔记:异常、泛型、集合框架(List、Set、Map)、Stream流
  • 【Golang】补充:占位符、转义字符、错误处理
  • linux中防火墙的配置
  • deploy myEclipse j2ee project to server没反应
  • OpenHarmony子系统开发 - init启动引导组件(三)
  • 56.fm解调最简单的方法过零检测,如何确定计时器的更新速率
  • 批归一化(Batch Normalization)与层归一化(Layer Normalization)的区别与联系
  • “GoFun出行”订单时隔7年扣费后续:平台将退费,双方已和解
  • 日本一季度实际GDP环比下降0.2%
  • 长三角首次,在铁三赛事中感受竞技与生态的共鸣
  • 马上评|这种“维权”已经不算薅羊毛,涉嫌犯罪了
  • 美国务院批准向土耳其出售导弹及相关部件,价值3.04亿美元
  • 美国务卿鲁比奥将前往土耳其参加俄乌会谈