题目描述

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

有了前面寻找二叉树路径的基础之后,解决这题应该不难。根据书上的思路,有一种更简洁的算法,思路如下:如果二叉树只有根节点那么深度就是1,如果只有左子树,那么就是左子树的深度加1就是整棵二叉树的深度;如果只有右子树,那么二叉树的深度就是右子树的深度加1;如果既有左子树又有右子树,那么二叉树的深度就是左右子树中深度更大的深度加1了。根据这个过程,自然发现,实际上只需要分别递归二叉树的左右子树并计算其深度,那么最后在其较大值中加1就是二叉树的深度了。所以,实现的代码如下(已被牛客AC):

package com.rhwayfun.offer;public class BTreeDepth {static class TreeNode {int val = 0;TreeNode left = null;TreeNode right = null;public TreeNode(int val) {this.val = val;}}public int TreeDepth(TreeNode root) {if(root == null) return 0;int leftSubTree = TreeDepth(root.left);int rightSubTree = TreeDepth(root.right);return leftSubTree > rightSubTree ? leftSubTree + 1 : rightSubTree + 1;}public static void main(String[] args) {TreeNode root = new TreeNode(1);TreeNode node1 = new TreeNode(2);TreeNode node2 = new TreeNode(3);TreeNode node3 = new TreeNode(4);TreeNode node4 = new TreeNode(5);TreeNode node5 = new TreeNode(6);TreeNode node6 = new TreeNode(7);root.left = node1;root.right = node2;node1.left = node3;node1.right = node4;node2.right = node5;node4.left = node6;int d = new BTreeDepth().TreeDepth(root);System.out.println(d);}
}

剑指offer系列之三十七:二叉树的深度相关推荐

  1. 剑指offer(C++)-JZ55:二叉树的深度(数据结构-树)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的 ...

  2. leetcode 打印_剑指 Offer 总结 - leetcode 剑指offer系列

    剑指 Offer 系列完结撒花!! 本篇文章是对整个系列的精华总结, 对系列的每篇文章进行了分类, 并用一句话概括每道题的思路, 方便大家理解和记忆, 当然也包含原文完整链接供大家参考 总的来说, 写 ...

  3. 《LeetCode力扣练习》剑指 Offer 28. 对称的二叉树 Java

    <LeetCode力扣练习>剑指 Offer 28. 对称的二叉树 Java 一.资源 题目: 请实现一个函数,用来判断一棵二叉树是不是对称的.如果一棵二叉树和它的镜像一样,那么它是对称的 ...

  4. LeetCode Algorithm 剑指 Offer 28. 对称的二叉树

    剑指 Offer 28. 对称的二叉树 Ideas 一开始想的有问题,看了例子以为对称二叉树的中序遍历序列是回文数组,然后就用这么写了,结果到第192个测试用例[1,2,2,2,null,2]就失败了 ...

  5. 在要求输入数字处找到非数字字符_剑指 Offer 67. 把字符串转换成整数 leetcode 剑指offer系列...

    点击专辑上方"蓝字"关注我吧 题目难度: 中等 原题链接[1] 今天继续更新剑指 offer 系列, 老样子晚上 6 点 45 分准时更新公众号 每日精选算法题, 大家记得关注哦~ ...

  6. 剑指offer python实现_剑指offer系列python实现 日更(三)

    今天来讲讲斐波那契数列和它的孩子们~先讲个冷笑话:今天来一盘斐波那契炒饭,它等于昨天的炒饭加上前天的炒饭 ‍ 7.斐波那契数列 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第 ...

  7. 【LeetCode】剑指 Offer 28. 对称的二叉树

    [LeetCode]剑指 Offer 28. 对称的二叉树 文章目录 [LeetCode]剑指 Offer 28. 对称的二叉树 一.递归 一.递归 对称二叉树定义:对于书中任意两个对称结点 L 和 ...

  8. 数组中其余的排除_[leetcode 剑指offer系列] 面试题04. 二维数组中的查找

    题目难度: 简单 原题链接 今天继续更新剑指 offer 系列, 这道题的优化空间非常大, 个人感觉很适合作为面试题, 值得一做. 大家在我的公众号"每日精选算法题"中的聊天框中回 ...

  9. 剑指offer——复习1:二叉树三种遍历方式的迭代与递归实现

    剑指offer--复习1:二叉树三种遍历方式的迭代与递归实现 20180905更新:这个博客中的解法不是很好,看相应的LeetCode题目笔记~~~ 我感觉此博客中的说法更容易让人理解:https:/ ...

最新文章

  1. GStreamer跨平台多媒体框架
  2. 吴恩达新书《Machine Learning Yearning》中7个实用建议(附论文)
  3. pyhon 数据类型转换函数
  4. 5G对数据中心的架构产生的影响-vecloud微云
  5. python 网格线_Python版简单网格策略(教学)
  6. java excil表格开发_JAVA导出Excel电子表格的方法
  7. bean validation校验方法参数_Spring Boot 之使用 validation 验证参数
  8. 循环的各种形式(不拘一格编程序之四)
  9. 苹果AirPods 2又有新消息了!具备防滑涂层和新配色
  10. 如何从技术上“绞杀”盗链者?
  11. Ajax开发框架(上)[整理]
  12. hive 配置 mysql时的问题(Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D)
  13. GB28181移植总结
  14. 妲己机器人功能_来自机器人影响者的5个功能强大的Instagram教训
  15. 关于man命令后面加数字
  16. ASP.NET MVC4 高级编程
  17. Overture2020免费下载直装版专业钢琴打谱软件(附序列号码)
  18. 58同城开源web框架 Argo (四)
  19. 文献(8): 单细胞和空间分析揭示FAP+成纤维细胞和SPP1+巨噬细胞在结直肠癌中的相互作用
  20. Scene之间的数据传递

热门文章

  1. 用Discuz/UCenter账号实现Wifi登录认证
  2. 统一沟通-技巧-11-Lync-联盟-1-MSN
  3. linux shell 的 for 循环
  4. 改善WPF应用程序性能的10大方法(转)
  5. 如何编写数据库存储过程?
  6. CISCO路由器的恢复方法
  7. Polycom开启“创新协作+”时代 全新解决方案闪耀京城
  8. HTML5会砸掉iOS和Android开发者的饭碗么?
  9. 让你不再害怕指针(一)
  10. vc 6.0常见编译错误及改正方法