binary-tree相关内容

为什么我不能使用“中断"?C++ 中三元条件语句中的语句?

Node 是一个非常简单的类,只有一个构造函数和几个变量:一个“名称"(实际上只是一个字符)和两个称为“左"和“右"的子节点指针. 我刚开始写一些需要放到最左边节点的代码,当我想到这个时我很高兴: Node *current = this->root;while (true) (current->left != nullptr) ?当前=当前->左:中断; 看起来很简单:在一个无限循环中 ..
发布时间:2021-12-22 08:05:12 C/C++开发

“完全二叉树"、“严格二叉树"、“全二叉树"的区别?

我对以下树的术语感到困惑,我一直在研究树,但无法区分这些树: a) 完全二叉树 b) 严格二叉树 c) 全二叉树 请帮我区分这些树.何时何地在数据结构中使用这些树? 解决方案 维基百科生成 全二叉树(有时是正二叉树或二叉树或严格二叉树)是一棵树,其中除叶子之外的每个节点都有两个孩子. 所以你没有只有 1 个孩子的节点.看起来和严格二叉树一样. 这是一个 ..
发布时间:2021-12-22 00:07:40 其他开发

如何判断二叉树是否平衡?

那些学年已经有一段时间了.在一家医院找到了一份 IT 专家的工作.现在试着去做一些实际的编程.我现在正在研究二叉树,我想知道确定树是否高度平衡的最佳方法是什么. 我在想一些事情: public boolean isBalanced(Node root){如果(根==空){返回真;//树是空的}别的{int lh = root.left.height();int rh = root.righ ..
发布时间:2021-12-22 00:07:30 Java开发

一棵树的左孩子右兄弟表示是什么?你为什么要使用它?

许多数据结构使用称为 “左孩子,右兄弟" 表示.这是什么意思?为什么要使用它? 解决方案 左子右兄弟表示 (LCRS) 是一种编码 多路树(一种树结构,其中每个节点可以有任意数量的子节点)使用 二叉树(每个节点最多可以有两个子节点的树结构). 动机 为了激发这种表示的工作原理,让我们从考虑一个简单的多路树开始,就像这里的这个: A//|\ \//|\ \B C D E F|/| ..
发布时间:2021-12-22 00:06:16 其他开发

跳过列表与二叉搜索树

我最近遇到了称为跳过列表.它似乎与二叉搜索树具有非常相似的行为. 你为什么要在二叉搜索树上使用跳过列表? 解决方案 跳过列表更适合并发访问/修改.Herb Sutter 撰写了一篇关于并发环境中的数据结构的文章.它有更深入的信息. 二叉搜索树最常用的实现是红黑树.当树被修改时,并发问题就会出现,它通常需要重新平衡.重新平衡操作会影响树的大部分区域,这将需要对许多树节点进行互斥锁 ..

可以用 N 个键创建的二叉搜索树的可能数量由第 N 个加泰罗尼亚数字给出.为什么?

这已经困扰了我一段时间了.我知道给定 N 个键以二叉搜索树的形式排列,可以创建的树的可能数量对应于 加泰罗尼亚语序列. 我一直在试图确定这是为什么;无法找到任何可能甚至试图直观地解释它的东西,我求助于 SO 的集体知识.我找到了其他方法来计算可能的树的数量,但它们似乎不太直观,除了如何使用它之外没有提供任何解释.再加上维基页面(上面的链接)甚至显示了一个可能的树形结构的图像,带有 3 个键, ..
发布时间:2021-12-17 15:27:43 其他开发

是大 O(logn) 对数基数 e 吗?

对于二叉搜索树类型的数据结构,我看到大 O 表示法通常记为 O(logn).对数中的小写“l"是否意味着自然对数所描述的以 e (n) 为底的对数?抱歉问了一个简单的问题,但我总是无法区分不同的隐含对数. 解决方案 一旦用 big-O() 表示法表示,两者都是正确的.然而,在O()多项式的推导过程中,在二分搜索的情况下,只有log2是正确的.我认为这种区别是您提出问题的直观灵感. 此 ..
发布时间:2021-12-17 14:50:41 其他开发

如何迭代二叉树?

现在我有 private static void iterateall(BinaryTree foo) {if(foo!= null){System.out.println(foo.node);iterateall(foo.left);iterateall(foo.right);}} 你能把它改成迭代而不是递归吗? 解决方案 你能把它改成迭代而不是递归吗? 您可以使用显式堆 ..
发布时间:2021-12-16 09:03:15 Java开发

给定后序遍历如何构造BST

我知道有一些方法可以从前序遍历(作为数组)构造一棵树.考虑到中序和前序遍历,更常见的问题是构造它.在这种情况下,虽然中序遍历是多余的,但它确实让事情变得更容易.任何人都可以给我一个想法如何为后序遍历做到这一点?需要迭代和递归解决方案. 我尝试使用堆栈迭代地执行此操作,但根本无法获得正确的逻辑,因此得到了一个可怕的凌乱树.递归也是一样. 解决方案 如果你有一个来自 BST 的后序遍历的 ..
发布时间:2021-12-16 08:51:04 其他开发

用 Haskell 广度优先构建二叉树(非 BST)

我最近开始使用 Haskell,它可能会持续使用一段时间..只是被要求使用它来更好地理解我在 Uni 上的课程的函数式编程. 现在我在尝试做的事情上遇到了一个小问题.我想以广度优先来构建它,但我认为我的条件搞砸了,或者我的条件也错了. 所以基本上如果我给它[“A1-Gate"、“North-Region"、“South-Region"、“Convention Center"、“Rect ..

更改 std::map 中元素键的最快方法是什么

我理解人们不能这样做的原因(重新平衡和其他东西): 迭代器 i = m.find(33);如果(我!= m.end())i->第一个= 22; 但到目前为止,更改键的唯一方法(我知道)是从树中完全删除节点,然后使用不同的键插入值: 迭代器 i = m.find(33);如果(我!= m.end()){值= i->秒;m.erase(i);m[22] = 值;} 出于更多原因,这对我来说似乎 ..
发布时间:2021-12-10 16:31:13 C/C++开发

C 如何“画"控制台的二叉树

在控制台中可以使用哪些算法来绘制二叉树?该树是用 C 实现的.例如,一个编号为:2 3 4 5 8 的 BST 将在控制台中显示为: 解决方案 查看 用 Ascii 打印二叉树 来自下面的@AnyOneElse Pastbin: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!代码最初来自/http://www.openasthra.com/c-t ..
发布时间:2021-12-06 19:57:47 其他开发

如何在任何二叉树中找到两个节点的最低公共祖先?

这里的二叉树不一定是二叉搜索树. 结构可以作为 - 结构节点{整数数据;结构节点 *left;结构节点*右;}; 我能和朋友一起想出的最大解决方案是这样的 - 考虑这个二叉树: 中序遍历产生 - 8, 4, 9, 2, 5, 1, 6, 3, 7 后序遍历产生 - 8, 9, 4, 5, 2, 6, 7, 3, 1 因此,例如,如果我们想找到节点 8 和 5 的共同祖先, ..

以最优方式在二叉搜索树中找到第k个最小元素

我需要在不使用任何静态/全局变量的情况下找到二叉搜索树中第 k 个最小的元素.如何高效实现?我想到的解决方案是在 O(n) 中进行操作,这是最糟糕的情况,因为我计划对整个树进行中序遍历.但在内心深处,我觉得我没有在这里使用 BST 属性.我的假设解决方案是正确的还是有更好的解决方案? 解决方案 这里只是一个想法的大纲: 在BST中,节点T的左子树只包含小于T中存储的值的元素.如果 k ..
发布时间:2021-12-06 19:39:58 其他开发

二叉搜索树的搜索次数

有谁知道如何计算二叉搜索树的搜索时间(即最坏情况、最好情况和平均情况)? 解决方案 对于非自平衡树(对于搜索树来说可能但不常见),最坏情况是 O(n),即退化二叉树(一个链表). 在这种情况下,在找到所需元素之前,您平均必须搜索列表的一半. 对于完美平衡的树,最好的情况是 O(log2 n),因为您将每个树级别的搜索空间减半. 平均情况介于两者之间,完全取决于数据:-) ..
发布时间:2021-11-27 11:58:53 其他开发

如何在Java中打印二叉树图?

如何在 Java 中打印二叉树,以便输出如下: 4/\2 5 我的节点: public class Node{节点左右;一个数据;公共节点(A数据){this.data = 数据;}} 解决方案 我已经创建了简单的二叉树打印机.您可以根据需要使用和修改它,但无论如何它都没有优化.我认为这里有很多地方可以改进;) import java.util.ArrayList;导入 jav ..
发布时间:2021-11-25 15:04:55 Java开发

二叉树的高效数组存储

我们必须将二叉树的节点写入文件.编写二叉树的最节省空间的方法是什么?我们可以将其以数组格式存储,父项位于i,子项位于2i、2i+1.但是这在稀疏二叉树的情况下会浪费很多空间. 解决方案 我喜欢的一种方法是存储前序遍历,但也包括“空"节点.存储“空"节点不需要同时存储树的中序. 这种方法的一些优点 在大多数实际情况下,您可以比 pre/post + inorder 方法进行更好的 ..
发布时间:2021-11-18 02:53:44 其他开发