给定的二叉树是否完整[关闭]

2023-12-31

给定一个二叉树,编写一个函数来检查给定的二叉树是否是完全二叉树。

完全二叉树是这样的二叉树:除了最后一层之外,每一层都被完全填满,并且所有节点都尽可能位于最左边。来源:维基百科 http://en.wikipedia.org/wiki/Binary_tree#Types_of_binary_trees

我的方法是使用队列进行 BFS 并计算节点数。运行一个 循环直到队列不为空,但一旦找到其中之一就中断 以下条件成立:

  1. 节点的左节点不存在
  2. 左节点存在,但右节点不存在。

现在我们可以比较从上述方法获得的计数和 树中节点的原始计数。如果两者相等则 完整的二叉树否则不是。

请告诉我这种方法是否正确。谢谢。

这个问题和这个问题是一样的this https://stackoverflow.com/questions/1442674/how-to-determine-whether-a-binary-tree-is-complete。但我想在这里验证一下我的方法。

Edit:算法经过@验证鲍里斯·斯特兰杰夫以下。我觉得这是网络中可用的一些算法中最容易实现的算法。如果您不同意我的主张,真诚地道歉。


你的算法应该可以解决问题。

使用 BFS 所做的事情完全等同于绘制树,然后用手指从上到下、从左到右追踪节点。第一次无法继续时,请停止用手指描画。如果您没有计算所有节点,则结构显然不符合预期。

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

给定的二叉树是否完整[关闭] 的相关文章

  • 如何求小于给定数的最大2次方

    我需要找到小于给定数字的最大 2 次幂 我陷入困境 找不到任何解决方案 Code public class MathPow public int largestPowerOf2 int n int res 2 while res lt n
  • 有人可以解释以下异或属性

    我的一个论坛提到给定的数组n数字 arr 0 n 1 以下条件成立 is the xor运算符 f l r f 0 r f 0 l 1 where f l r arr l arr l 1 arr r 我检查了上面的数组数量和不同的值l an
  • 时间复杂度和运行时间有什么区别?

    时间复杂度和运行时间有什么区别 它们是一样的吗 运行时间是指程序运行所需的时间 时间复杂度是对输入大小趋于无穷大时运行时间渐进行为的描述 您可以说运行时间 是 O n 2 或其他什么 因为这是描述复杂性类和大 O 表示法的惯用方式 事实上
  • URL路径相似度/字符串相似度算法

    我的问题是我需要比较 URL 路径并推断它们是否相似 下面我提供了要处理的示例数据 GROUP 1 robots txt GROUP 2 bot html GROUP 3 phpMyAdmin 2 5 6 rc1 scripts setup
  • 在常数空间中创建 1..N 的随机排列

    我正在寻找枚举固定空间中数字 1 N 的随机排列 这意味着我无法将所有数字存储在列表中 原因是 N 可能非常大 超过可用内存 我仍然希望能够一次遍历这样一个数字的排列 只访问每个数字一次 我知道对于某些 N 可以这样做 许多随机数生成器随机
  • 使用并集查找(又名不相交集)检测图是否是二分图

    我正在 Spoj 上做一个问题 基本上可以简化为检测图是否是二分图 我正在尝试使用 dfs 为图表着色 但它太慢了 有人评论这个 没有 bfs 没有 dfs 没有二部图 简单的并查集就可以做到 确实速度很快 提示 1 偶数长度的环不会影响两
  • 时间序列数据预处理 - numpy strides 技巧以节省内存

    我正在预处理一个时间序列数据集 将其形状从二维 数据点 特征 更改为三维 数据点 时间窗口 特征 在这样的视角中 时间窗口 有时也称为回顾 指示作为输入变量来预测下一个时间段的先前时间步长 数据点的数量 换句话说 时间窗口是机器学习算法在对
  • 解释这段代码的工作原理;子进程如何返回值以及在哪里返回值?

    我不明白子进程如何返回该值以及返回给谁 输出为 6 7 问题来源 http www cs utexas edu mwalfish classes s11 cs372h hw sol1 html http www cs utexas edu
  • shell脚本中关联数组的时间复杂度

    我想知道在 shell 脚本中使用关联数组时如何构造 实现 另外 我想知道基于 shell 脚本的关联数组的时间复杂度是否是最佳的 因为我们可以使用字母和数字作为它们各自的键 编辑 他们使用什么哈希函数 如果您使用关联数组 则不能通过 使用
  • 找到一条穿过任意节点序列的最短路径?

    In 这个先前的问题 https stackoverflow com questions 7314333 find shortest path from vertex u to v passing through a vertex wOP询
  • 给定一个具有多个重复条目的数组,找到一个重复条目 O(N) 时间和常数空间

    我们得到了一个大小为 N 的数组 其中包含 0 到 N 2 范围内的整数 包括 0 和 N 2 该数组可以有多个重复的条目 我们需要在 O N 时间和常量空间中找到重复条目之一 我正在考虑取数组中所有条目的乘积和总和 以及 0 到 N 2
  • 如何在文件系统中存储图像

    目前 我已将图像 最大 6MB 作为 BLOB 存储在 InnoDB 表中 随着数据大小的增长 夜间备份变得越来越慢 阻碍了正常性能 因此 二进制数据需要进入文件系统 指向文件的指针将保存在数据库中 数据具有树状关系 main site u
  • 两组点之间的最佳匹配

    I ve got two lists of points let s call them L1 P1 x1 y1 Pn xn yn and L2 P 1 x 1 y 1 P n x n y n 我的任务是找到它们点之间的最佳匹配 以最小化它
  • 用于开始和/或包含搜索的最快字符串集合结构/算法是什么

    我有以下情况 我有一个大的字符串集合 比如说 250 000 平均长度可能是 30 我要做的就是在这些搜索中进行许多搜索 大多数搜索都是 StartsWith 和 Contains 类型的 该集合在运行时是静态的 这意味着选择的集合的初始读
  • 每个术语出现的次数

    我得到了一个数组a n 2 where n can be 10 5最大时有n个科目和n个学生 全部编号为 1 2 n a i 0 and a i 1 1 lt i lt n 表示在第 i 个科目中 所有来自a i 0 to a i 1 通过
  • 有没有时间复杂度为O(N)的排序算法?

    大多数排序算法的复杂度为 O NN 或 O NlogN 来实现结果 但是 对于特定的输入集 有些算法的复杂度为 O N 我想知道是否有一种排序算法在所有情况下都具有 O N 的复杂度 如果您只能比较 检查两个项目是否为 正在排序的值 那么您
  • O(1) 算法确定节点是否是多路树中另一个节点的后代?

    想象一下下面的树 A B C D E F 我正在寻找一种方法来查询 F 是否是 A 的后代 注意 F 不需要是directA 的后代 在这种特殊情况下这是正确的 只需要针对更大的潜在后代节点池测试有限数量的潜在父节点 当测试一个节点是否是潜
  • 数量重新分配逻辑 - 具有外部数据集的 MapGroups

    我正在研究一种复杂的逻辑 需要将数量从一个数据集重新分配到另一个数据集 在例子中我们有Owner and Invoice 我们需要从数量中减去Invoice准确地Owner匹配 在给定汽车的给定邮政编码处 减去的数量需要重新分配回同一辆车出
  • 我正在尝试寻找“调酒师算法”

    我正在解决旧编程竞赛中的一些示例问题 在这个问题中 我们输入了我们有多少调酒师以及他们知道哪种配方 每杯鸡尾酒的制作时间为 1 分钟 我们需要计算是否可以在 5 分钟内使用所有调酒师完成订单 解决这个问题的关键是尽可能高效地分配鸡尾酒 这就
  • 将名称字符串编码为唯一的数字

    我有一大堆名字 数以百万计 他们每个人都有一个名字 一个可选的中间名和一个姓氏 我需要将这些名称编码为唯一代表这些名称的数字 编码应该是一对一的 即一个名称只能与一个数字相关联 一个数字只能与一个名称相关联 对此进行编码的明智方法是什么 我

随机推荐

  • 如何从 C# 代码调用 Google 地理编码服务

    我有一个 C 类库 从那里我必须调用谷歌服务并获取纬度和经度 我知道如何在页面上使用 AJAX 来完成此操作 但我想直接从我的 C 类文件调用 Google 地理编码服务 有什么方法可以做到这一点 或者我可以使用任何其他服务来实现此目的 你
  • 用 Haskell 编写 Zipwith

    我正在尝试写ZipwithHaskell 中的函数 如果我使用以下值运行它 它应该返回以下结果 Prelude gt zipWith 10 20 30 33 44 94 43 64 124 到目前为止我的代码是 Zipwith f Zipw
  • Google 电子表格“无法调用 null 的方法“getRange””

    如果 B 列从第六行开始的每一行都发生了变化 我想在 A 列中生成一个唯一的 ID 使用 1 到 X 之间的数字作为 ID 就足够了 但在移动 de row 后它不应该改变 但我不断收到错误 无法调用 null 的方法 getRange f
  • 使用所有插件引导新的 Eclipse 机器

    在新机器上引导 Eclipse 是一个非常耗时的过程 您最终会问自己是否真的需要每个插件 但这一切都很方便 并且有助于养成一致的习惯 Eclipse 引导问题包括 解释 记录需要发生的事情 粘贴正确的 URL 并下载的实际时间 版本兼容性和
  • Linux:信号处理程序执行可以被抢占吗?

    我遇到了以下信号处理程序代码 它存储 errno 变量 以便它不会影响主线程的 errno 处理 void myhandler int signo int esaved esaved errno write STDOUT FILENO Go
  • python程序错误elif else if [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions def G
  • 如何在 JavaScript 中找到整数的质因数?

    我试图找到一个数字的质因数 在下面使用 JavaScript 中的 for 循环记录为 整数 我似乎无法让它工作 我不确定这是我的 JavaScript 还是我的计算逻辑 integer is the value for which we
  • Haskell:如何将 IO 输入字符串解析为 Float(或 Int 或其他)?

    我正在尝试制作一个程序 该程序接受用户通过键盘输入的浮点数字并对其进行处理 然而 每次我尝试将输入的字符串解析为浮点数时 我都会收到错误 我尝试过的每一种方法都无法让我获取用户输入的数据并将其转换为我需要的浮点数 我的练习计划 不是我要解决
  • 泰坦数据损坏

    我在调用时遇到异常com tinkerpop blueprints Edge getLabel在某些顶点边上 java lang IllegalStateException Could not find type for id 630 at
  • 填充 int 数组从零到定义的数字

    我需要将 C 中的 int 数组从零填充到变量定义的数字 但 ISO C 禁止可变长度数组 如何轻松填充数组 我需要分配 释放内存吗 int possibilities SIZE unsigned int i 0 for i 0 i lt
  • wix 安装程序ice03 无效语言 ID

    我有一个夜间版本 它在与我的不同的机器上运行在我的机器上 我可以毫无问题地编译安装程序并使用 msi然而在晚上构建机器时我得到 C Builds 73 Tools AppInstaller src AppInstaller APPExpor
  • Python - 无限 While 循环

    我不明白为什么底部的 while 循环是无限循环 User enters a positive integer number user input int input Please enter a positive integer numb
  • Swing 中的交互式平面直线图

    我正在尝试在 JApplet 上绘制交互式平面直线图 PSLG 我使用鼠标单击来确定 PSLG 的顶点 这是我用来绘制 PSLG 边缘的算法 1 将用户执行鼠标单击的点添加为 PSLG 的顶点 2 如果他单击第二个点 则该点和先前单击的点之
  • Crockford 风格的上下文着色是否在任何代码编辑器中实现?

    我观看了 YUIConf 2012 的视频 其中 Douglas Crockford 发表了有关在 JavaScript 中实现 monad 的演讲 在本次演讲中 他给出了一个代码示例 该示例利用了他所谓的 上下文着色 它抛弃了按语言语法着
  • 为什么具有 UNC 路径的 .NET 的 File.Open 会进行过多的 SMB 调用?

    我有一段代码需要使用 UNC 路径从 NAS 服务器打开并读取大量小文本文件 此代码是最初用 C 编写的模块的一部分 但现在正在转换为 C C 版本明显慢一些 我确定打开文件的调用几乎是所有性能差异的原因 使用 WireShark 我发现这
  • 在 Linq 查询中比较 byte[]

    我的 SQL 表中有一个二进制列 我使用以下 C 代码成功查询了该表 var hash http www whatever com ToSHA256HashBytes var landingPage context LandingPages
  • 使用 Order By 函数计算两点之间的距离(长、纬度)时 MySQL 查询速度变慢

    我在 MySQL 中有一个查询 它在表的每一行上运行一个存储函数 然后根据函数的结果对行进行排序 然后返回前 10 行 SELECT rowId MyFunction x y constX constY AS funResult FROM
  • 使用 C# 将 UTF-8 转换为 Unicode

    请帮帮我 我在 GET 请求后编码响应字符串时遇到问题 var m refWebClient new WebClient var m refStream m refWebClient OpenRead this m refUri var m
  • Django:使用排除的字段验证 ModelForm 中的 unique_together 约束

    我有一个表格 class CourseStudentForm forms ModelForm class Meta model CourseStudent exclude user 对于具有一些复杂要求的模型 class CourseStu
  • 给定的二叉树是否完整[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 给定一个二叉树 编写一个函数来检查给定的二叉树是否是完全二叉树 完全二叉树是这样的二叉树 除了最后一层之外 每一层都被完全填满 并且所有节