【剑指offer】面试题39:二叉树的深度

2023-11-09

一、题目描述

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

二、解题思路

       递归思想:
        (1) 如果一棵树只有一个节点,那么深度为1。
        (2) 如果根节点只有左子树而没有右子树,那么树的深度是其左子树的深度加1。
        (3) 如果根节点只有右子树而没有左子树,那么树的深度是其右子树的深度加1。

三、实现代码

/*
struct TreeNode {
	int val;
	struct TreeNode *left;
	struct TreeNode *right;
	TreeNode(int x) :
			val(x), left(NULL), right(NULL) {
	}
};*/
class Solution {
public:
    int TreeDepth(TreeNode* pRoot)
    {
        if(pRoot==NULL)
            return 0;
        
        int nLeft = TreeDepth(pRoot->left);
        int nRight = TreeDepth(pRoot->right);
        
        return (nLeft>nRight) ? (nLeft+1) : (nRight+1);
    }
};



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

【剑指offer】面试题39:二叉树的深度 的相关文章

  • Nuxt3请求封装数据封装

    新建utils http ts import hash from ohash 后端返回的数据类型 export interface ResOptions
  • 重磅!Cloud Ace 在巴西圣保罗建立第一家南美子公司

    Cloud Ace Inc 总部 东京都千代田区 代表 青木诚 以下简称 Cloud Ace 于2023年3月10日宣布在巴西成立新子公司 Cloud Ace 一直在全球扩展其业务 从亚洲开始 目标是在世界各地设有办事处 我们最近加入的是在
  • Web菜鸟入门教程 - MyBatis通过数据库生成java代码

    SpringBoot大大简化了Web开发流程 可以这么说 做Web后来开发大部分时间就是在做配置文件修改 Web开发中 终端的运算能力越来越强 大部分场景就是数据库的操作 只有少部分逻辑会放在Web端处理 而这些增删查改基本属于标准的格式
  • 实现一个顺序存储的线性表(数据结构与算法 - 线性表)

    任务描述 本关任务 实现 step1 Seqlist cpp 中的SL InsAt SL DelAt和SL DelValue三个操作函数 以实现线性表中数据的插入 删除与查找等功能 相关知识 线性表是最基本 最简单 也是最常用的一种数据结构
  • Python list函数

    目录 描述 语法 使用示例 1 创建一个空列表 无参调用list函数 2 将字符串转换为列表 3 将元组转换为列表 4 将字典转换为列表 5 将集合转换为列表 6 将其他可迭代序列转化为列表 注意事项 1 参数必须是可迭代序列对象 将列表转
  • chrome中直接使用import

    现在我们在开发项目时都是基于构建工具 像webpack 上进行开发 所以在使用import时得心应手 但今天在chrome中直接使用import时 发现不知道如何使用 chrome中直接使用import 三个条件 浏览器版本需要支持 浏览器
  • c++常用输出函数详解

    1 printf printf的基本运用 printf是c 标准输出函数 目的是向标准输出设备按规定格式输出信息 格式如下 printf d a 上面的a是一个int形变量 但如果想输出一个字符型的变量 字符串等该怎么办呢 那我们就要把 后
  • 【mmdetection】小trick试验结果

    基准 faster rcnn r50 fpn 1x coco简称frrf config mAP 最好 模型大小 publish model cal train time s iter 1 frrf 0 9346 315 32MB
  • axios实现同步请求

    如何实现ajax请求的同步 通过jquery发送 将async属性设置为false 这样就会发送同步请求 在axios中 所有的请求都是异步发送的 所以单独用axios是实现不了同步的 需要结合async与await关键字使用 var da
  • ab压力测试 和 nginx 配置优化 及 用户打开的最大进程数

    原文 https blog csdn net wudinaniya article details 86064797 一 ab压力测试 和 nginx 配置优化 压力测试工具 ApacheBench 简称ab 是Apache 中自带的基准性
  • 毕业设计-基于 Python 的天气预测系统

    目录 前言 课题背景和意义 实现技术思路 一 Python 二 网络爬虫 三 基于 Python 的天气预测系统 四 系统测试 五 总结 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学
  • MATLAB 创建矩阵

    创建简单数值矩阵 输入矩阵是要以 为标识 矩阵的元素应在 内部 此时MATLAB才识别为矩阵 矩阵的同行元素之间可由空格或 分隔 行与行之间要用 或回车符分隔 A 1 2 3 4 5 6 7 8 9 运算结果 使用 zeros 函数和 on

随机推荐

  • luci流程简介

    LuCI作为 FFLuCI 诞生于2008年3月份 目的是为OpenWrt固件从Whiterussian 到 Kamikaze实现快速配置接口 LuCI是OpenWrt上的Web管理界面 LuCI采用了MVC三层架构 使用lua脚本开发 所
  • mysql不能使用别名做判断条件的解决方案

    错误例子 select name as n from user where n 张三 报错 n 字段在表user中不存在 解决办法 select name as n from user where name 张三 具体原因 请自行百度
  • SpringMVC框架从入门到精通

    文章目录 SpringMVC 框架介绍 概述 MVC模型 性能超群 工作原理 案例 展示汽车数据 需求 创建Maven module 创建RunApp java Car java CarController java 测试 处理请求参数 概
  • element-ui表格组件el-table实现行编辑与新增功能

    element前端ui组件挺美观的 我们也使用了他们的table组件 但是默认没有提供行编辑功能 我们可以通过将table的每个单元格换成input框来巧妙实现 默认每个单元格就是一个template数据填充 不可编辑 我们可以在templ
  • Qt-Web混合开发-QtWebChannel实现Qt与Web通信交互(4)

    Qt Web混合开发 QtWebChannel实现Qt与Web通信交互 文章目录 Qt Web混合开发 QtWebChannel实现Qt与Web通信交互 1 概述 2 实现效果 3 实现功能 4 关键代码 5 源代码 更多精彩内容 个人内容
  • 不仅仅好看!30个优秀logo的设计思想分析

    拥有一个抢眼的Logo对企业来乃一大幸事 毕竟Logo千千万 但真正让人过目不忘的作品可是屈指可数 好的Logo必须量体裁衣 迅速传递出企业的价值和理念 本文里精选了30个经典的标志设计 并附上设计思想分析 相信会对你受益匪浅 Castle
  • 从零开始的iOS开发: 20

    目录 一 开发环境 二 基础知识 1 往期知识点 2 简易自动布局 Stack View 三 实验步骤 1 先在Xcode建立一个APP项目 2 界面搭建 3 连接控件与代码 4 补充代码 完善功能 一 开发环境 开发工具 Xcode 12
  • 【Vue】Element-Plus 源码学习笔记——实现一个基本的 ElMessage 组件

    先贴下 Element Plus ElMessage 源码的网址 我们需要实现的效果类似 ElMessage 即能够显示多个消息 上一个消息消失下面的消息会自动往上移动 进入移出动画 自定义消息和持续时间 其他选项这里不考虑 大体思路 我们
  • C++ 风格指南

    0 扉页 0 1 译者前言 Google 经常会发布一些开源项目 意味着会接受来自其他代码贡献者的代码 但是如果代码贡献者的编程风格与 Google 的不一致 会给代码阅读者和其他代码提交者造成不小的困扰 Google 因此发布了这份自己的
  • Windows+Git+TortoiseGit+COPSSH安装图文教程

    跟师弟一起搭了个git本地服务器 他整理了一下相关内容 我转过来 准备工作 1 Git 1 8 1 2 preview20130201 exe 下载地址 https code google com p msysgit downloads l
  • 【RocksDB】Ubuntu20.04下编译rocksdb

    前言 我在刚学rocksdb的时候是在2022年 但是网上的资源很少 查了好久才把rocksdb安装成功 在这里向大家分享一下我的经历 安装过程中也报了很多错误 希望大家不要迷路 首先 在虚拟机里面安装依赖的包以及组件 总共七个依赖包和组件
  • Java 抽象类和普通类、接口的区别——看完你就顿悟了

    Java 抽象类和普通类 接口的区别 看完你就顿悟了 标签 java抽象类概念理解抽象类与接口区别抽象类与普通类区别 2017 05 04 16 26 1029人阅读 评论 0 收藏 举报 分类 Java 17 版权声明 本文为博主csdn
  • 3D语音天气球(源代码分享)——通过天气服务动态创建3D球

    转载请注明本文出自大苞米的博客 http blog csdn net a396901990 谢谢支持 开篇废话 这个项目准备分四部分介绍 一 创建可旋转的 3D球 3D语音天气球 源代码分享 创建可旋转的3D球 二 通过天气服务 从网络获取
  • The MRC database dictionary之FAM库 ( familiarity 熟悉程度)

    breakfast 657 afternoon 655 clothes 652 bedroom 646 dad 646 girl 645 radio 644 book 643 newspaper 641 water 641 big 640
  • Linux系统下卸载VMware Workstation软件

    之所以写这篇文的原因是自己linux台式电脑上需要卸载VMware Workstation软件 网上检索了很多关键词 搜索到的大都是卸载vm虚拟机内安装的Linux操作系统 可能就是这方面的说明内容太少了 在此记录一下 说不定以后就能用上了
  • Flutter使组件居于屏幕中间

    有多种方式可以使组件居于屏幕中间 以下是其中的几种 1 使用 Center 组件将子组件居中 dart Center child YourWidget 2 使用 Align 组件指定子组件的对齐方式 将其居中 dart Align alig
  • CSS的BEM命名规范

    BEM的意思就是块 block 元素 element 修饰符 modifier 是由Yandex团队提出的一种CSS命名方法 其背后的想法是将用户界面分为独立的块 即使使用复杂的UI 这也使界面开发变得容易和快速 并且允许重用现有代码而无需
  • python库是什么

    1 概念 库的概念是具有相关功能模块的集合 这也是Python的一大特色之一 2 库的分类 在Python语言的库中 分为Python标准库和Python的第三方库 python的标准库是随着pyhon安装的时候默认自带的库 python的
  • OkHttp的特性优点及爬虫示例

    OkHttp是一个Java和Android应用程序的HTTP客户端库 旨在提高资源加载速度和节省带宽 与其他类似的库相比 它具有以下优点和区别 一 OkHttp的特性和优点 支持HTTP 2协议 可提高效率和速度 支持连接池 减少请求延迟
  • 【剑指offer】面试题39:二叉树的深度

    一 题目描述 输入一棵二叉树 求该树的深度 从根结点到叶结点依次经过的结点 含根 叶结点 形成树的一条路径 最长路径的长度为树的深度 二 解题思路 递归思想 1 如果一棵树只有一个节点 那么深度为1 2 如果根节点只有左子树而没有右子树 那