if (node == null)

{

return 0;

}

叶节点的子节点为空。因此,这就是说,一旦我们过了叶子,没有更多的节点。

如果我们不经过叶节点,我们必须计算高度,并且这个代码这样递归。

return 1 +

当前节点将当前正在计算的子树的高度增加1。

Math.max(heightOfBinaryTree(node.left),

heightOfBinaryTree(node.right));

我们递归地计算左子树(node.left)和右子树(node.right)的高度。由于我们计算最大深度,我们取这两个深度的最大值。

我上面显示了递归函数是正确的。因此调用父节点上的函数将计算整个树的深度。

这里是从this document的树的高度的图形表示.h是树的高度,hl和hr分别是左和右子树的高度。

Moreover, I thought of just doing a

BFS with the root of the binary tree

as the argument to get the height of

the binary tree. Is the previous

approach better than mine?Why?

您提供的代码是DFS的一种形式。由于您必须处理所有节点以找到树的高度,所以DFS和BFS之间没有运行时差异,尽管BFS将使用O(N)内存,而DFS将使用O(logN)内存。 BFS也稍微复杂一些,因为它需要一个队列,而DFS使用“内置”递归堆栈。

java 二叉树的高度_java – 二叉树的高度相关推荐

  1. java 树面试题_java——二叉树面试题

    1 2 importjava.util.ArrayList;3 importjava.util.Iterator;4 importjava.util.LinkedList;5 importjava.u ...

  2. 数据结构与算法 3:二叉树,遍历,创建,释放,拷贝,求高度,面试,线索树

    [本文谢绝转载,原文来自http://990487026.blog.51cto.com] 树 数据结构与算法 3:二叉树,遍历,创建,释放,拷贝,求高度,面试,线索树二叉树的创建,关系建立二叉树的创建 ...

  3. 数据结构(3) 第三天 栈的应用:就近匹配/中缀表达式转后缀表达式 、树/二叉树的概念、二叉树的递归与非递归遍历(DLR LDR LRD)、递归求叶子节点数目/二叉树高度/二叉树拷贝和释放...

    01 上节课回顾 受限的线性表 栈和队列的链式存储其实就是链表 但是不能任意操作 所以叫受限的线性表 02 栈的应用_就近匹配 案例1就近匹配: #include <stdio.h> in ...

  4. 二叉树中的的深度、高度、度及其运算性质详解

    二叉树的深度/高度与节点的深度/高度的区别 按照书上的定义总结如下: 节点的层次 :根节点为第1层,往下每层递增1 节点的度(出度):该节点的孩子结点个数 节点的入度:该节点的直接父节点个数 树的度: ...

  5. java 递归深度优先遍历_Java基础 - 二叉树的遍历之深度优先遍历(递归遍历)

    package com.yc.test; import java.util.ArrayList; import java.util.List; import com.yc.tree.ThreeLink ...

  6. java 文件遍历排序_Java的二叉树排序以及遍历文件展示文本格式的文件树

    Java二叉树排序算法排序二叉树的描述也是一个递归的描述, 所以排序二叉树的构造自然也用递归的: 排序二叉树的3个特征: 1:当前node的所有左孩子的值都小于当前node的值: 2:当前node的所 ...

  7. java 二叉树特点_疯狂java笔记之树和二叉树

    树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定义和基本术语 计算机世界里的树,是从自然界中实际的树抽象而来的,它指的是N个有父子关系 ...

  8. Java的数据结构之路——二叉树(代码实现)

    二叉树(Binary tree)是树形结构的一个重要类型.许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特 ...

  9. java二叉树详解_二叉树详解

    树是一种比较重要的数据结构,尤其是二叉树.二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒.本篇 ...

最新文章

  1. centos6 安装 mantisbt-1.2.8 —— (3)Linux系统下yum源配置(Centos 6)
  2. 「C++」C++ Primer Plus 笔记:第十七章 输入、输出和文件
  3. 牛客练习赛25 因数个数和
  4. 规定自己的Java编码规范
  5. Liveness 探测 - 每天5分钟玩转 Docker 容器技术(143)
  6. stm32运行linux,新出的STM32F750成功运行Linux
  7. Python for循环的用法,怎么前面还有一个变量或函数?
  8. Vue TodoList案例
  9. 在python中安装插件pynput实现聊天窗口消息轰炸
  10. 我的Latex中文报告模板
  11. python中文乱码问题大总结
  12. 微信公众号学习--点亮图片
  13. 前端架构,有什么能做的?
  14. 【python】turtle绘图几个超好看的颜色
  15. Android Service startForeground不显示Notification的办法
  16. bootstrap4导航栏居右
  17. 对公共交通app用户推荐理财产品有哪些营销策略?
  18. go (golang) DNS域名解析实现
  19. 做好企业站优化需从5个方面共同考虑
  20. Cocos2d-x 3.x 图形学渲染系列二十三

热门文章

  1. 转:真正的高手:或许走得慢,但从不后退
  2. minio【docker-compose 部署minio分布式集群】
  3. 我国上网计算机及用户数量,CNNIC第14次互联网统计报告:上网计算机数
  4. nextcloud私有云搭建
  5. 第五章 mysql表操作
  6. 微信小程序动画渐入以及动态存值setdata问题
  7. [笔记]移动APP运营模式
  8. 爬虫平台的架构实现和框架的选型(二)
  9. 探索WebKit内核(四)------ Inspector
  10. 【Lintcode】1723. Shortest Path in a Grid with Obstacles Elimination