tree - 如何从堆中删除根节点?
问题描述
我有一个堆:90 80 80 40 10 20 50。我必须删除根节点 3 次。它会取而代之的是什么叶子?
我尝试删除 90 个根节点并将其替换为 50 个,因为它位于堆的最后一个位置。但我也看到可以用 40 替换它,因为它是最后一个左孩子。什么解决方案是正确的?
解决方案
将其替换为 50 是正确的,因为它保持了从上到下和从左到右完整的堆结构的属性。
完全二叉树是一棵二叉树,其中除了可能的最后一层外,每一层都被完全填满,并且所有节点都尽可能靠左。
因此,删除最右边的位会使树尽可能地靠左。
推荐阅读
- json - 无法读取从 json 文件导入的图像 url
- typescript - VSCode 中的可选链接运算符支持
- reactjs - React,函数不加载数据
- wpf - 组合框用户手动输入和选择更改
- xml - xslt:从生成的表中替换节点值
- azure - azure runbook 使用 powershell 工作流在表格中发送电子邮件
- node.js - 将变量从 app.get 传递到 pug 视图
- swift - Swift4 - 带有文本字段的多个警报 - 完成处理程序
- node.js - Nodejs Express - 为不受支持的方法返回 405
- groovy - Groovy CliBuilder:定义了任何方法?