前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode 剑指 Offer 55 - I. 二叉树的深度

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

原创
作者头像
freesan44
修改2021-09-18 15:04:39
2240
修改2021-09-18 15:04:39
举报
文章被收录于专栏:freesan44freesan44freesan44

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

https://leetcode-cn.com/problems/er-cha-shu-de-shen-du-lcof/

题目描述

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

例如:

给定二叉树 [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)$

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目地址(55 - I. 二叉树的深度)
  • 题目描述
  • 思路
  • 关键点
  • 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档