- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我们如何在二叉树中插入一个键(不是 BST)?
我的意思是二叉树没有像 BST 这样的节点的某些属性,因此看起来可以在树中任何地方插入一个键。
然而,通过将 key 放在任何地方,二叉树可能会将其退化为失去其 O(logN)
属性的“列表”。
我已经看到使用合并方案创建二叉树(示例应用程序是 Huffman Tree
),但似乎没有遇到二叉树的插入方法。
我认为这个问题扩展到多路树,因为二叉树将是多路树(2 个子节点)的具体示例,对吧?
我错了吗?是否有一种特定的方法可以将新 key 添加到二叉树中,或者二叉树的应用程序是否如此具体以至于合并操作就足够并且不需要插入方法?也许我完全错过了 BT 的使用应用程序或概念?
注意:我问的是二叉树。 不是二叉搜索树。
更新:
如果插入可以在任何地方,术语的含义是什么:Full Binary Tree
?
这意味着无法通过在任何地方插入来实现日志属性。 “Full BT”也是一个没有意义的定义吗?
最佳答案
二叉树是一种特定类型的树,满足每个节点恰好有 0、1 或 2 个子节点的条件。任何满足此条件的树都被标记为二叉树。
因此,不存在将元素插入二叉树的“正确”方法。只要之前是二叉树,之后是二叉树,插入都是有效的。
术语二叉树更多的是用于分类。在其纯粹的“抽象”形式下,它作为数据结构并不是非常有用。然而,它在表征其他更具体类型的树木时很有帮助,例如 Huffman tree正如你提到的。
关于algorithm - 对树的基本操作感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10775183/
我正在尝试学习Rust。我正在阅读一本书online,该书实现了unix程序cat。现在,我试图读取作为像cargo run file1.txt file2.txt这样的参数传递的文件的内容,但是程序
我在 GHC 8.0.1 中遇到了一个带有种类索引 (?) GADT 的奇怪情况,其中在类型与种类签名中引入 foralls 会产生不同的类型检查行为。 考虑以下数据类型: {-# LANGUAGE
我正在使用 Perl 5.10 开发应用程序,HTML::Mason和 Apache 2.2。这是我第一次在大型项目中使用 Perl 5.10。我每隔一段时间就会出现奇怪的行为。应用程序因一个非常奇怪
我正在尝试将文件上传到aws中的rust中,因为我使用的是 rusoto_s3 的s3 rust客户端,当这些部分从单个线程发送时,我设法使分段上传代码正常工作不是我想要的,我想上传大文件,并且希望能
我是一名优秀的程序员,十分优秀!