二叉树深度的计算

2023-11-08

1. 最大深度:根节点到最远叶子节点路径上的节点数:

def maxdepth(root):
    if not root:
        return 0
    if not root.rchild and not root.lchild:
        return 1
    else:
        ml = maxdepth(root.lchild)
        ml += 1
        mr = maxdepth(root.rchild)
        mr += 1
    return max(ml,mr)

2. 最小深度:根节点到最近叶子节点路径上的节点数。

思路:需要注意的是当某一节点只有一个孩子节点的情况,例如根节点只有左子树时,此时需要将新的根节点设置为老根节点的左孩子,然后在最后的结果上加1。如果像求最大深度那样的话,此时返回的最小值是1.

def mindepth(root):
    if not root:
        return 0
    if not root.rchild and not root.lchild:
        return 1
    if not root.rchild:                 # 如果节点只有左孩子时,需要将根节点设置为左孩子,在最后的结果上+1
        return mindepth(root.lchild)+1
    if not root.lchild:                 # 如果节点只有右孩子时,需要将根节点设置为右孩子,在最后的结果上+1
        return mindepth(root.rchild)+1
    else:
        ml = mindepth(root.lchild)
        ml += 1
        mr = mindepth(root.rchild)
        mr += 1
    return min(ml,mr)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

二叉树深度的计算 的相关文章

随机推荐

  • 在偏远乡村感受中国电信优厚服务

    春节期间 笔者在家使用中国电信天翼上网卡的过程中发现 目前中国电信的3G网络覆盖在偏远乡村还不是很到位 不过在3G市场的激烈竞争中 运营商的服务意识却有着明显的提升 笔者从北京回家过年 在江西南昌市的一家电信营业厅购买了3G上网卡 当时得知
  • Vue3引用Dplayer播放器播放m3u8,hls播放协议

    一 安装 npm安装Dplayer npm install S Dplayer yarn安装Dplayer yarn add Dplayer 播放协议为 hls 安装hls npm install hls js S 二 代码 我用的是vue
  • sed 命令的高级用法

    编辑命令 d 删除 p 显示模式空间的内容 a text 在行后面追加文本 支持使用 n实现多行追加 i text 在行前面插入文本 支持使用 n实现多行插入 c text 替换行为单行或多行文本 w path to somefile 保存
  • 查看服务器信息

    1 查看 CPU 物理个数 grep physical id proc cpuinfo sort u wc l 2 查看 CPU 核心数量 grep core id proc cpuinfo sort u wc l 3 查看 CPU 线程数
  • MATLAB教学_09影像处理二

    本文视频地址 https www bilibili com video av68228488 p 9 主要学习了初阶影像处理 有三个内容 图像阈值 背景预测 相关连的标签 计算米粒颗数 先将图片二值化 那么有米粒的区域应该是1 而没有的地方
  • [Leetcode] 19. 删除链表的倒数第N个节点

    题目描述 给定一个链表 删除链表的倒数第 n 个节点 并且返回链表的头结点 示例 给定一个链表 1 gt 2 gt 3 gt 4 gt 5 和 n 2 当删除了倒数第二个节点后 链表变为 1 gt 2 gt 3 gt 5 说明 给定的 n
  • 【满分】【华为OD机试真题2023B卷 JAVA&JS】计算误码率

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 计算误码率 知识点双指针 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 误码率是最常用的数据通信传输质量指标 它可以理解为 在多少位数据中出现一位差错 移动通信网络中
  • activiti学习(五)——执行监听器与任务监听器的基本使用

    本文介绍执行监听器与任务监听器的基本原理和使用方法 当流程途径连线或者节点的时候 会触发对应的事件类型 执行监听器与任务监听器在生产中经常会用在几个方面 动态分配节点处理人 通过前一个节点设置的变量 在运行到下一个节点时设置对应的处理人 当
  • Python安装tar.gz格式文件方法详解

    这篇文章主要介绍了Python安装tar gz格式文件方法详解 文中通过示例代码介绍的非常详细 对大家的学习或者工作具有一定的参考学习价值 需要的朋友可以参考下 有的库没有找到对应的 whl格式文件 只有 tar gz格式文件 接下来总结下
  • STM 32——TIM定时器频率测量

    STM 32 TIM定时器频率测量 1 定时器不同工作模式的配置 在使用STM32进行脉冲频率测量时 免不了会碰上TIM定时器的配置问题 这里做一个简单介绍 1 1计数器模式 首先我们选择内部时钟 PCLK 作为定时器的时钟源 PHB总线时
  • 小文件通过接口参数传递

    文件通过base64转换的字符 private static void updateFileInfo File file DocumentInfo docInfo throws IOException ArchiveException Da
  • 目标检测之FCOS算法分析

    网络结构 图片来自原论文 FCOS Fully Convolutional One Stage Object Detection 在ResNet50 Backbone中 C 3 C 4 C
  • Appium自动化框架从0到1之 公共方法的封装

    在写测试用例的时候 最常用的就是方法的调用 我们在这里 把公共方法封装到一个文件中 这样以后需要使用 直接调用这个方法就可以了 直接上代码 common func py coding utf 8 auth carl DJ time 2020
  • HTML基础(新手入门教程)

    学习笔记 HTML基础 前言 勤做笔记不仅可以让自己学的扎实 更重要的是可以让自己少走弯路 有人说 再次翻开笔记是什么感觉 我的回答是 初恋般的感觉 或许笔记不一定十全十美 但肯定会让你有种初恋般的怦然心动 本章着重复习Html的基础内容
  • 计算机网络-详细版

    鉴于有人需要离线版的PDF文档 这里给出本文章的PDF版本 下载地址如下 https pan itnxd cn 123Pan csdn share computer network pdf 一 计算机网络体系结构 0 脑图 1 计算机网络概
  • 一键开关电路设计(一)

    一键开关电路 一 一 功能需求提出 在一些电子产品中 列举 按键的开关机是比不可少的 比如有点按开关机 长按2s短按2s关机 或者长短按相结合来开关机 这里 我分享本人在开发过程中用到的开关机电路 可通过具体开关芯片的选择来实现上面提到的所
  • 操作系统win7与win10的区别介绍

    转自 微点阅读 https www weidianyuedu com 我们都知道Win7跟Win10都属于微软推出的电脑操作系统 这两款操作系统都有着非常鲜明的特点 而且也都有着各自的喜爱者 但是没有任何一款电脑系统是十全十美的 Win7
  • R语言——自定义函数求置信区间

    求单正态均值mu的置信区间 参数依次为置信水平alpha 正态样本x 已知总体方差 默认为未知 mu lt function alpha x sigma NA n lt length x meanx lt mean x if is na s
  • VC++6.0下新建工程中有17个选项,都是做什么用的?

    要理解每种工程的作用需要很多基础知识 简要的一下 1 ATL COM AppWizard 用来新建一个COM组件的向导 比如WORD里用的公式编辑器就是一个COM组件 2 Cluster Resource Type Wizard 群集资源类
  • 二叉树深度的计算

    1 最大深度 根节点到最远叶子节点路径上的节点数 def maxdepth root if not root return 0 if not root rchild and not root lchild return 1 else ml