以数组形式遍历不平衡二叉树

2024-03-22

不平衡(或非堆)二叉树可以使用数组表示,如下所示:

array = [1, 2, null, 3, 4, 5, 6, null, 7, 8, null]
         1
        /  \
       2    null
      /  \
    3      4
   / \   /  \
  5   6 null 7
 / \
8  null

如何使用给定的数组进行树遍历?更具体地说,如何计算父母左右孩子的指数?

在平衡树(例如堆树)中,我们可以使用父级索引轻松计算两个子级索引,反之亦然,如下所示。

leftChildIdx  = 2 * parentIdx + 1
rightChildIdx = 2 * parentIdx + 2

有没有一种简单的方法可以使用数组遍历这个不平衡的或看似随机的二叉树?


None

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

以数组形式遍历不平衡二叉树 的相关文章

  • 给定多个二叉树,更本地化、更高效的最低公共祖先算法?

    我有多个二叉树存储为数组 每个槽中要么是 nil 或 null 选择您的语言 要么是存储两个数字的固定元组 两个 子项 的索引 任何节点都不会只有一个子节点 要么没有 要么有两个 将每个槽视为一个二进制节点 仅存储指向其子节点的指针 并且没
  • 如何通过 BFS 和 DFS 遍历构建树

    我有BFS and DFS树的遍历 如何从这些遍历中重建树 例如 BFS Traversal 4 3 5 1 2 8 7 6 DFS Traversal 4 3 1 7 2 6 5 8 那么树就会像下面这样 4 3 5 2 1 8 6 7
  • 计数陷阱

    考虑计算结构不同的数量的问题二叉搜索树 http en wikipedia org wiki Binary search tree 给定 N 找到包含值 1 N 的结构不同的二叉搜索树的数量 给出一个解决这个问题的算法非常容易 修复根中每个
  • 不明白二叉树最大路径和问题的解法

    GeeksforGeeks 网站已推出一个办法 https www geeksforgeeks org find maximum path sum in a binary tree 对于二叉树的最大路径和问题 问题如下 给定一棵二叉树 找到
  • 如何修复 RedBlackTree 实现中的删除问题?

    这是我正在使用的 RedBlackTree 的实现 来自 Mark Allen Weiss 数据结构 public class RedBlackTree
  • 将二叉搜索树转换为双向链表

    这个问题是在最近的一次编码采访中被问到的 Q 给定一个二叉树 编写一个程序将其转换为双向链表 双向链表中的节点按照锯齿状层次顺序遍历形成的顺序排列 我的方法 我总是可以对树进行之字形级别顺序遍历并将其存储在数组中 然后创建一个双向链表 但这
  • 为淘汰赛创建二叉树

    我正在尝试创建一个用于淘汰赛的二叉树 该树由带有左指针和右指针的 TNode 组成 这是我想出的代码 如下 然而 它在使用指针时遇到了困难CreateTree部分 一旦创建了一个足够大的空树 我需要将 Memo1 List 上的名称添加到树
  • 理解从先序遍历构造树的伪代码

    我需要做一些类似于这个问题中描述的任务 根据给定的前序遍历构造树 https stackoverflow com questions 4908545 construct tree with pre order traversal given
  • “完全二叉树”、“严格二叉树”、“满二叉树”之间的区别?

    我对以下树的术语感到困惑 我一直在研究树 但无法区分这些树 a 完全二叉树 b 严格二叉树 c 完整二叉树 请帮我区分这些树 这些树何时何地在数据结构中使用 完美的树 x x x x x x x x x x x x x x x 完整的树 x
  • 切片神奇地更新

    我正在尝试编写一个程序来查找二叉树中的所有根到叶路径 其中每个路径的总和等于给定的总和 以下是我想出的代码 package main import fmt type TreeNode struct Val int Left TreeNode
  • 跳过列表——用过它们吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想知道这里是否有人用过跳过列表 http en wikipedia org wiki Skip list 它看起来具有与平衡二叉树大致相同的优
  • 为什么中序和前序遍历对于创建算法来确定 T2 是否是 T1 的子树很有用

    我正在看一本采访书 问题是 你有两个非常大的二叉树 T1 拥有数百万个节点 并且T2 有数百个节点 创建一个算法来决定是否T2是一个 的子树T1 作者提到这是一个可能的解决方案 请注意 这里的问题指定T1有数百万 节点 这意味着我们应该注意
  • 左平衡二叉树

    我正在读一本关于数据结构的书 它说左平衡二叉树是一棵树 其中叶子仅占据最后一层的最左边位置 这对我来说似乎有点模糊 这是否意味着叶子仅位于根的左侧并分布在整个级别 或者叶子仅存在于整个树的左侧 究竟什么构成左平衡 我不确定我的猜测是否涵盖了
  • 什么Python代码为二元运算符生成所有可能的分组(树)

    正如几个 SO 问题中所解释的 更抽象的是数学世界 http mathworld wolfram com BinaryBracketing html 加泰罗尼亚数字的序列恰好对应于可以为任何给定数量的运算符生成的括号分组的数量 但我还没有找
  • 如何使用{pre,in,post}顺序遍历结果重建BST

    我们知道前序 中序和后序遍历 什么算法可以重建 BST 因为是 BST in order可以排序自pre order or post order 其实 无论是pre order or post order只需要 如果你知道比较函数是什么 F
  • 在Scheme中插入二叉树

    我想知道如何将列表中的元素插入二叉搜索树 我想知道为什么下面的代码不能按我的预期工作 输出是 4 1 5 13 6 我的下一个问题是对列表中的元素进行排序 但现在我只想插入它们 我的输出对于我所说的问题是否正确 我的代码如下 define
  • 二叉搜索树是平衡的吗?

    这已经讨论过了here https stackoverflow com questions 742844 how to determine if binary tree is balanced 但我在下面有一个实现 线程中从未讨论过 pub
  • 2 个二叉树的交集会引发堆栈溢出错误

    我试图将两个二叉树相交 并使用相同的节点创建一个新的二叉树 但以下内容会产生 stackOverflow 错误 谁能帮我 private OrderedSet
  • 二叉树实现C++

    二叉树插入 include stdafx h include
  • 非二叉树的中序树遍历

    对于比二叉树更宽的树 术语 中序遍历 是否有明确定义的含义 或者 前 和 后 顺序是唯一有意义的 DFS 类型吗 我的意思是与n每个节点 gt 2 个子节点 我猜是为了n这甚至可能意味着之后要转到 根 n 2孩子们 但这曾经这样使用过吗 那

随机推荐

  • 在没有源的情况下更改 .jar 文件?

    我有一个基于 Java 的 TCP 客户端 它与我们的生产服务器通信 我正在重写它 客户端对服务器的 IP 和端口进行硬编码 我想要做的就是将客户端中的 IP 地址更改为 127 0 0 1 我可以在我的开发盒上使用相同的端口号 问题是 我
  • 爪哇。隐式超级构造函数 Employee() 未定义。必须显式调用另一个构造函数[重复]

    这个问题在这里已经有答案了 您好 我是 Java 新手 我在生产工作线程类中遇到此错误 我的生产工作线程构造函数显示显式调用另一个构造函数 我不知道该怎么办 import java util Date public class Employ
  • Python 或 PHP 中的感知哈希算法? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 相同运算符优先级的结合性 -- *start++

    为什么会出现下面的表达式 total start 评估为 total start And not total start though this doesn t really matter either it would be the sa
  • 有 Delphi XE2 样式库吗?

    在 XE2 中 有一个新函数 styles 用于 VCL vsf 和 Firemonkey styles 有些是在C Program Files Embarcadero RAD Studio 9 0 Redist styles目录 创建新样
  • 同步视图模型和视图

    我有一个由一些节点和一些连接器组成的视图模型 public class ViewModel public List
  • 更改滚动时的 URL 哈希并保持后退按钮正常工作

    在具有固定顶部菜单和锚点导航的一页布局上 我有一个 scrollspy 它可以更改滚动时的片段标 识符 根据滚动位置为菜单链接提供一个活动类 并使用 Velocity js 将滚动动画到锚点 不幸的是 它还做了什么 当单击浏览器后退按钮时
  • 在 JavaScript 中递归构建 Promise 链 - 内存注意事项

    In 这个答案 https stackoverflow com a 29906627 3478010 递归地构建承诺链 稍微简化一下 我们有 function foo function doo always return a promise
  • 将箭头放在 3d 图中的向量上

    I plotted the eigenvectors of some 3D data and was wondering if there is currently already a way to put arrowheads on th
  • 存储 ASP.NET 密钥、密码的安全方法

    存储网站密钥和 或密码的最佳实践是什么 这些密钥用于各种第 3 方 Web 服务 最好将它们放在 Web config 文件中 数据库中或以某种方式加密吗 您可以将加密值存储在 config 文件中 ASP NET 2 0 将即时解密它们
  • 如何查看我的 Redis 数据库 current_size?

    我知道 redis cli 以及 info 和 config 命令 但是 他们没有任何说明当前数据库大小的信息 我怎样才能弄清楚这一点 使用INFO命令 完整详细信息在这里 http redis io commands info http
  • VSCode 1.14.0 7月更新有重大问题:如何回滚?

    因此 新的 VSCode 更新版本 1 14 0 会导致以下主要问题 CPU 使用率高 导致冻结 随机崩溃 扩展不可用 IntelliSense 工作一半时间 所以我的问题是如何将 VSCode 回滚到以前的版本而不丢失我的配置 1 14
  • 如何测试放置在子文件夹中的 django 应用程序?

    我在测试分组在子文件夹中的 django 应用程序时遇到问题 好吧 让我解释一下情况 标准 django 项目结构如下所示 django project appname1 appname2 appname3 lib tests docs s
  • 将 NSColor 转换为 RGB

    我正在尝试将 NSColor 转换为 RGB 但它似乎给出了完全错误的结果 NSColor testColor NSColor colorWithCalibratedWhite 0 65 alpha 1 0 const CGFloat co
  • 输入类型提交与输入类型按钮

    我一直在尝试用 PHP 解决一个恼人的行为 我认为 也许你们中的一些人也遇到过同样的情况并有一些想法 我有一个 html 表单 并且使用一个带有 onClick 事件的元素来调用 javascript 函数 处理脚本的内容后 我执行 for
  • 可以更换大开关吗?

    我有一个名为 ReportController aspx 的页面 其目的是根据查询字符串参数实例化报告 类 switch Request QueryString Report case ReportA CreateReportAReport
  • Matplotlib rcparams (autolimit_mode) 用于单个图形

    我对新的 Matplotlib 2 0 0 有疑问 默认情况下 新的 autolimit mode 值会向框架添加填充 我想避免它变成一个数字 如果我更改 rcParams 则更改会影响任何生成的图形 我可以更改单个图形的此参数而不影响其余
  • 通过公式而不是脚本在单元格中使用 Google Sheets 文件名?

    有没有FORMULA这将在单元格中显示文件的名称 我找到了可以做到这一点的脚本 可以显示工作表名称的公式 但没有找到可以显示文件名的公式 如果我必须诉诸剧本 那就这样吧 但如果可能的话我想使用公式 如果以前有人问过这个问题 请指出该帖子 我
  • Object.values() 的替代版本

    我正在寻找替代版本Object values 功能 As 此处描述 https developer mozilla org en US docs Web JavaScript Reference Global Objects Object
  • 以数组形式遍历不平衡二叉树

    不平衡 或非堆 二叉树可以使用数组表示 如下所示 array 1 2 null 3 4 5 6 null 7 8 null 1 2 null 3 4 5 6 null 7 8 null 如何使用给定的数组进行树遍历 更具体地说 如何计算父母