首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

计算二叉树的最大高度

二叉树的高度有两种定义: 从根节点到最深节点的最长路径的节点数。 从根到最深节点的最长路径的边数。 在这篇文章中,我们采用第一种定义。例如,下面这棵树的高度是3: ?...计算二叉树高度有两种方法,一种是使用二叉树的层级遍历法,一种是使用递归法。...层级遍历法计算高度 我们可以使用二叉树的层级遍历法来计算二叉树的高度,这种方式的主要步骤是: 创建空队列保存二叉树的每一层节点,初始化标识二叉树高度的变量height为0 一层一层地遍历二叉树,每向下遍历一层.../** * 二叉树的高度:使用递归,时间复杂度O(n) * * @param root * 二叉树的根节点 * @return 二叉树的高度 */ public...= null) { // 左子树与右子树的高度取最大值加上当前节点 return Math.max(height(root.left), height(root.right)) + 1;

4.9K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    推导B树的最大高度和最小高度得出B树的高度范围

    前提条件:n>=1,则对于任意一棵包含n个关键字、高度为h、阶数为m的B树。 一、最小高度: 对于任意树类型的数据结构,如果其每层节点能够分布的足够满,其高度也会随之变得足够的低。...基于这个思路,对于B树无外乎也是一种树,B树的关键字数以及儿子节点个数满足这样的条件(ceil代表向上取整): //根节点 儿子节点个数[2, m] 关键字个数[1, m-1] //非根节点 儿子节点个数...[ceil(m/2), m] 关键字个数[ceil(m/2)-1, m-1] 为了使得B树高度最低,也就是每层的节点数达到最大,看如下的计算过程: 二、最大高度: 要使得B树的高度达到最大,也就意味着在每个节点中...,关键字的个数达到最小,这样在容纳相同个数的关键字的B树中,其高度可以达到最大。...有了上边我们对最小关键字大小把控,下面来推到B树的最大高度: 总结: 由一和二可知,通过寻找B树的两种极限的存在,推出B树的高度范围为:logm(n+1)<= h <=log(ceil(m/2

    3.3K10

    DS树--二叉树高度

    题目描述 给出一棵二叉树,求它的高度。二叉树的创建采用前面实验的方法。...注意,二叉树的层数是从1开始 输入 第一行输入一个整数t,表示有t个二叉树 第二行起输入每个二叉树的先序遍历结果,空树用字符‘0’表示,连续输入t行 输出 每行输出一个二叉树的高度 输入样例1 1 AB0C00D00...输出样例1 3 思路分析 首先把树给建立起来,递归建立树的每个节点,先建立数据,再递归建立左子树,然后递归建立右子树,递归结束的条件是到了字符串末尾或者遇到字符0。...我一开始的想法是,计算出每个节点的深度,然后找出最大的深度,后来出了点问题,在我的学长的光芒下,用三行代码算出了树的高度。...递归求解树的高度: 如果节点为空,返回0,否则返回左子树和右子树的高度的最大者加一。 膜拜大佬。

    16740

    二叉树的最大深度

    题目 给定一个二叉树,找出其最大深度 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数 使用前序(中左右),也可以使用后序遍历(左右中),使用前序求的就是深度,使用后序求的是高度。...对于二叉树最大深度和最大高度的理解 二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数或者节点数(取决于深度从0开始还是从1开始) 二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数或者节点数...(取决于高度从0开始还是从1开始) 而根节点的高度就是二叉树的最大深度,所以本题中我们通过后序求的根节点高度来求的二叉树最大深度。...此时将层数加1,然后将整棵树遍历完后,得到的二叉树的层数就是我们需要的最大深度 代码实现 //层序遍历的模板 class Solution { public int maxDepth(TreeNode...说明: 从根节点开始 ,那么就是说如果根节点的左右子节点如果有一个为空的话那么就不能算 示例: 给定二叉树 [3,9,20,null,null,15,7], 思路 和求最大深度有些类似,但是也有很多不同

    4710

    【算法】二叉树的最大深度

    题目难度:简单[1] 题目描述: 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。...测试用例: 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最大深度 3 解题分析及思路: 本题可以采用分治法...分:可以将左右两个节点拆分为同等的子集 治:判断终止条件并计算 合:根据左右节点返回的最大深度来计算当前节点的子树的最大深度 代码分析: 分的操作:将左右两个节点拆分。...l := maxDepth(root.Left) r := maxDepth(root.Right) 治的操作:当前访问到的节点为空时,返回0值,代表此节点的子树深度为0。...if root == nil { return 0 } 合的操作:根据左右节点返回的最大深度来计算当前节点的子树的最大深度,如果左子节点的子树深度大于右子节点的子树深度,返回左子节点的子树深度 +

    31320

    堆叠长方体的最大高度(排序+最大上升子序DP)

    你可以通过旋转把长方体的长宽高重新排列,以将它放在另一个长方体上。 返回 堆叠长方体 cuboids 可以得到的 最大高度 。 示例 1: ?...第 0 个长方体放在中间,45x20 的一面朝下,高度为 50 。 第 2 个长方体放在上面,23x12 的一面朝下,高度为 45 。 总高度是 95 + 50 + 45 = 190 。...选择第 1 个长方体然后旋转它,使 35x3 的一面朝下,其高度为 76 。...你可以把 11x7 的一面朝下,这样它们的高度就是 17 。 堆叠长方体的最大高度为 6 * 17 = 102 。...最大整除子集(DP) 程序员面试金典 - 面试题 08.13. 堆箱子(DP) LeetCode 673. 最长递增子序列的个数(DP) LeetCode 1027.

    84620

    3 二叉树的最大深度

    本文涉及知识点  二叉树的遍历 队列的运用 二叉树的遍历和队列的相关概念前面已经介绍,忘记了的小伙伴复习后再看效果一定翻倍哟!...1 Leetcode103 二叉树的最大深度 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。...示例1: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最大深度 3 。...01 题目解析 思路 二叉树,分为左子树和右子树,那么求最大的深度就可以理解为左右子树较大值+1(max(left,right)+1)).小蓝在此声明下,树的大部分用递归实现会简洁很多,但是小蓝为了和大家一起巩固如何使用栈或者队列等数据结构来迭代实现...按照步骤2,从队列取出元素B,并将它的左右节点入队。此时深度为3. ? 02 动画演示 小蓝希望大家能够开开心心的学习,并能得到好的offer!也可以分享给身边朋友或者文末点个在看哟。

    36130

    Android 自定义最大宽度,高度, 宽高比例 Layout

    前言 这篇博客主要介绍的是怎样自定义一个可以指定最大宽度,高度,以及宽高比的 Layout。原理其实很简单,就是通过重写 onMeasure 方法,重新制定 MeasureSpec。...h_w,该值才会生效 指定最大宽度,高度 指定最大宽度,最大高度,我们值需要使用 ml_maxWidth,ml_maxheight 属性即可,当然我们也可以同时指定最大宽度和最大高度。...接着,高度按照 mRatio 进行调整,接着判断高度是否超出最大高度,超出取最大高度,没超出,取原来的值。...最后,根据相应的 size,mode 生成相应的 MeasureSpec 当模式已高度为基准的时候,我们首先对高度进行调整,是否超出最大高度,超出取最大高度,没超出,取原来的值。...最后,根据相应的 size,mode 生成相应的 MeasureSpec 当模式是默认,没有指定宽度或者高度作为基准的时候,直接判断宽高度是否超出最大的宽高度,制定相应的 MeasureSpec 即可。

    2.5K20

    DS二叉树—二叉树结点的最大距离

    题目描述 二叉树两个结点的距离是一个结点经过双亲结点,祖先结点等中间结点到达另一个结点经过的分支数。二叉树结点的最大距离是所有结点间距离的最大值。例如,下图所示二叉树结点最大距离是3,C和D的距离。...二叉树用先序遍历顺序创建,#表示空树。计算二叉树结点最大距离和最大距离的两个结点(假设二叉树中取最大距离的两个结点唯一)。...输入 测试次数T 第2行之后的T行,每行为一棵二叉树先序遍历结果(#表示空树) 输出 对每棵二叉树,输出树的结点最大距离和最大距离的结点,输出格式见样例。...而距离可以用深度来计算,这个满足条件的解的树的左右子树的深度加起来就是最大距离。 也就是说,我们需要找出每棵树的左右子树的深度之和,然后找出最大的就是我们需要的解,这个用一个递归函数可以完成。...对于一颗树,它的最深的末端叶子节点应该在深度最大的子树那里,所以我们需要知道子树的深度,再引入一个求深度的函数,这个求树的深度的函数非常NB,是一个学长教的,只用了三行代码搞定。

    45230
    领券