当前位置: 首页 > news >正文

剑指Offer系列(java版,详细解析)55.二叉树的深度

题目一

题目描述

二叉树的深度

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

二叉树的节点定义如下:

测试用例

  • 功能测试(输入普通的二叉树;二叉树中所有节点都没有左/右子树)
  • 特殊输入测试(二叉树只有一个节点;二叉树的头节点为空指针)

解题思路

递归思路

一个树的深度可以理解为左、右子树深度的最大值加1。

参考解题

/**
 * 二叉树的深度
 *
 */
public class Solution1 {
    /**
     * 递归
     * @param root
     * @return
     */
    public int treeDepth(BinaryTreeNode root) {
        if (root == null) {
            return 0;
        }
        int left = treeDepth(root.left);
        int right = treeDepth(root.right);
        return Math.max(left, right) + 1;
    }
}

题目二

平衡二叉树

输入一颗二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树任意节点的左、右子树的深度相差不超过1,那么它就是一颗平衡二叉树。

测试用例

  • 功能测试(输入普通的二叉树;不是平衡的二叉树;二叉树中所有节点都没有左/右子树)
  • 特殊输入测试(二叉树只有一个节点;二叉树的头节点为空指针)

参考解题

class Solution {
    public int maxDepth(TreeNode root) {
        if(root == null) return 0;
        return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
    }
}

题目考点

  • 考察应聘者对二叉树的理解和编程能力。
  • 考察应聘者对新概念(树的深度)的学习能力。
  • 考查应聘者的知识迁移能力。

相关文章:

  • 剑指Offer系列(java版,详细解析)56.数字中数字出现的次数
  • 剑指Offer系列(java版,详细解析)57.和为s的数字
  • 剑指Offer系列(java版,详细解析)58.翻转字符串
  • 剑指Offer系列(java版,详细解析)59.队列的最大值
  • 剑指Offer系列(java版,详细解析)60.n个骰子的点数
  • 剑指Offer系列(java版,详细解析)61.扑克牌中的顺子
  • 剑指Offer系列(java版,详细解析)62.圆圈中最后剩下的数字
  • 剑指Offer系列(java版,详细解析)63.股票的最大利润
  • 剑指Offer系列(java版,详细解析)64.求1+2+...+n
  • 剑指Offer系列(java版,详细解析)65.不用加减乘除做加法
  • 剑指Offer系列(java版,详细解析)66.构建乘积数组
  • 剑指Offer系列(java版,详细解析)67.把字符串转化成整数
  • 剑指Offer系列(java版,详细解析)68.树中两个节点的最低公共祖先
  • Go语言fmt.Sprintf(格式化输出)
  • Go 面试系列:Go interface中nil的比较问题
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 【剑指offer】让抽象问题具体化
  • 30秒的PHP代码片段(1)数组 - Array
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • fetch 从初识到应用
  • JavaScript 奇技淫巧
  • JavaScript类型识别
  • JavaScript新鲜事·第5期
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • supervisor 永不挂掉的进程 安装以及使用
  • vagrant 添加本地 box 安装 laravel homestead
  • vue总结
  • 搞机器学习要哪些技能
  • 规范化安全开发 KOA 手脚架
  • 简析gRPC client 连接管理
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 一起参Ember.js讨论、问答社区。
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 责任链模式的两种实现
  • 智能网联汽车信息安全
  • puppet连载22:define用法
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • 湖北分布式智能数据采集方法有哪些?
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​马来语翻译中文去哪比较好?
  • #define 用法
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (二)斐波那契Fabonacci函数
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (三)c52学习之旅-点亮LED灯
  • (三)docker:Dockerfile构建容器运行jar包
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)ABI是什么
  • ***监测系统的构建(chkrootkit )
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .net CHARTING图表控件下载地址