6.4 数据结构---树的深度

一、最大深度

1.二叉树的最大深度 leetcode104

给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
    3
   / \
  9  20
    /  \
   15   7
返回它的最大深度 3

  

思路1:深度优先搜索(递归)

终止条件:如果二叉树为空,则深度为0;

递归体:如果不为空,分别求左子树的深度和右子树的深度,取最大的再加1

  

思路2:把树看做是图,用dfs求最长长度的路径

  

思路3:层次遍历,计算有多少层,即为树的深度

  

2.N叉树的最大深度 leetcode559

题目:给定一个N叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数

思路:二叉树求最大深度一样,只是由固定的左右子节点变成了一堆子节点,方法没变

  • 递归,如果node为空,直接返回
  • 遍历node的所有孩子节点,取最大值+1作为最大深度

  

 

二、最小深度

1.二叉树的最小深度 leetcode111

题目:给定一个二叉树,找出其最小深度。二叉树的最小深度为根节点到最近叶子节点的距离。

思路1:计算左子树和右子树深度的时候,判断是否等于0,如果等于0,说明该子树不存在,深度赋值为最大值。

思路2:判断左子树或右子树是否为空,若左子树为空,则返回右子树的深度,反之返回左子树的深度,如果都不为空,则返回左子树和右子

  

 

posted @   nxf_rabbit75  阅读(2712)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
一、最大深度1.二叉树的最大深度 leetcode1042.N叉树的最大深度 leetcode559二、最小深度1.二叉树的最小深度 leetcode111
点击右上角即可分享
微信分享提示