LeetCode 剑指 Offer 55 - I. 二叉树的深度

简介: 输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。

网络异常,图片无法展示
|

题目地址(55 - I. 二叉树的深度)

leetcode-cn.com/problems/er…

题目描述

输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。
例如:
给定二叉树 [3,9,20,null,null,15,7],
    3
   / \
  9  20
    /  \
   15   7
返回它的最大深度 3 。
提示:
节点总数 <= 10000
注意:本题与主站 104 题相同:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/

思路

用dfs的方式进行递归遍历,找出全部点,然后通过当前深度,和最大深度的max比较,返回最大深度

关键点


代码

  • 语言支持:Python3

Python3 Code:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    def maxDepth(self, root: TreeNode) -> int:
        res = self.dfs(root,0,0)
        return res
    def dfs(self, node: TreeNode, cur: int, maxNum: int)->int:
            if node == None:
                # print("尽头",cur,maxNum)
                return maxNum
            cur = cur+1
            # print(node.val, cur,maxNum)
            maxNum = max(maxNum, cur)
            leftMax, rightMax = 0, 0
            if node.left != None:
                leftMax = self.dfs(node.left,cur,maxNum)
            if node.right != None:
                rightMax =self.dfs(node.right,cur,maxNum)
            # print("max",leftMax,rightMax)
            return max(leftMax,rightMax,maxNum)

复杂度分析

令 n 为数组长度。

  • 时间复杂度:O(n)O(n)
  • 空间复杂度:O(n)O(n)
目录
打赏
0
0
0
0
1
分享
相关文章
|
6月前
【LeetCode 31】104.二叉树的最大深度
【LeetCode 31】104.二叉树的最大深度
48 2
|
6月前
【LeetCode 29】226.反转二叉树
【LeetCode 29】226.反转二叉树
47 2
|
6月前
【LeetCode 43】236.二叉树的最近公共祖先
【LeetCode 43】236.二叉树的最近公共祖先
44 0
|
6月前
【LeetCode 38】617.合并二叉树
【LeetCode 38】617.合并二叉树
37 0
|
6月前
【LeetCode 37】106.从中序与后序遍历构造二叉树
【LeetCode 37】106.从中序与后序遍历构造二叉树
40 0
|
6月前
【LeetCode 34】257.二叉树的所有路径
【LeetCode 34】257.二叉树的所有路径
48 0
|
6月前
【LeetCode 32】111.二叉树的最小深度
【LeetCode 32】111.二叉树的最小深度
40 0
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
8月前
|
【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
85 6
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
177 2