binary-search-tree相关内容

二进制堆-查找高处的节点数

我已经为此苦苦挣扎了几个小时,我似乎也找不到答案.(关于Binary Heap的文章很多,但我没有这个特殊问题). 问题是: 对于具有1492个节点的二进制堆,高度为2的节点数为_ 187 _. 我了解到,在1492个节点的情况下,二进制堆的深度为log(1492)/log(2)= 10高度2应该有2 ^(10-2)个节点,应该是256 为什么答案是187? 谢谢 ..
发布时间:2021-04-15 19:37:25 其他开发

处理AVL树中的重复密钥

我想使我的 avl-tree 支持重复键,但是 binary search tree 的默认行为存在问题,因为重复操作会导致节点旋转用相同的键位于父级的左侧和右侧. 例如,当添加三个全部都具有键A的节点时,将导致树进行如下旋转: A/\A A 因此,使用该键获取所有条目将是一个问题...双向搜索都不好. 我想到的解决方案是使每个节点存储一个重复数组因此,当添加一个已经存在的新项 ..

如何在Java二叉树中实现泛型有序遍历?

如何为我的Binary Tree类创建有序遍历.我已经查看并尝试了其他示例,但似乎无法为我工作. 下面是到目前为止我的有序遍历方法: public void inOrder(TreeNode根){if(root!= null){inOrder(root.left());//通过打印节点数据来访问节点System.out.printf(“%d",root.value());inOr ..
发布时间:2021-04-15 19:37:16 Java开发

方案:从BST中删除最大值

大家下午好 我有一个非常奇怪的问题,很抱歉,如果我在论坛的错误部分中发帖了. 我正在尝试从用方案编写的BST中理解 remove-max 函数(下面提供),但是我很难理解其中的想法.我知道Scheme语法,但是此函数有很多工作要做,因此我有点困惑. (定义removemax-BST(lambda(T)(cond((null?(caddr t))(cons(cadr t)(car t) ..
发布时间:2021-04-15 19:37:13 其他开发

二进制搜索树迭代器Java

我做了LeetCode问题二进制搜索树迭代器.以下代码是我从他人那里学到的.我不明白哪一部分是cur = cur.right.因为我得到的cur.val值最小.为什么我需要将cur.right分配给cur?当我删除cur = cur.right时,它说超过了时间限制.有人可以帮我解释一下吗? 公共类BSTIterator {堆栈堆;TreeNode cur;公共BSTIte ..
发布时间:2021-04-15 19:37:10 其他开发

尝试使用模板创建类的新实例,发生意外错误

尝试使用模板制作 B 初级 S 检索 T ree(简称BST). 当我尝试创建BST的新实例时,出现意外错误.我希望该解决方案不涉及指针,因为我希望将其保持在最低限度. 现在我有: 模板class BST {//包含节点的二进制搜索树私人的:BSTNode*根;//引用根节点上市:BST();bool add(int,Type);}; 节点 ..
发布时间:2021-04-15 19:37:07 C/C++开发

了解BST遍历的打印输出

我试图了解以下代码的工作方式.该代码将按应有的方式执行,但我不理解其中的一部分. 这是按顺序遍历二叉搜索树的一种方法: def遍历(自己):def io(节点):print("restart")#添加到代码中以查看发生了什么如果节点不是None:将print("b4 app",node.data)#添加到代码中以查看发生了什么如果node.left:io(node.left)result ..
发布时间:2021-04-15 19:37:04 Python

二叉搜索树中的第二大元素

我正在寻找一种简单的算法来查找二叉搜索树中的下一个最大元素(键),有人可以帮忙吗? 解决方案 假设“下一个最大节点"是指当前节点所在位置的下一个最大节点... 在当前节点上,向右走一次.您去了一个价值更高的节点.然后,尽可能多地向左走.您已在价值最低的节点处结束,该节点仍比起点高. ..
发布时间:2021-04-15 19:37:01 Java开发

在BST Python中删除节点

这是在Python中为BST实现添加和删除功能的一种可能方法.它有点类似于我在C ++中对BST的想法.从删除代码可以明显看出,我想删除一个节点,由于在C ++中缺少通过Python的引用传递,因此我无法执行该操作.除了删除 del currNode 之外,删除节点的好方法是什么(这不起作用).我还有一个问题要澄清我关于在Python中按引用传递的想法,当使用节点通过 add 函数添加节点时,它仍 ..
发布时间:2021-04-15 19:36:58 Python

构造二叉搜索树的时间复杂度是多少?

“在最坏的情况下,每个用于比较n个元素的基于比较的算法都必须进行Ω(nlogn)个比较.因此,构造n节点二进制搜索树的复杂性是什么?为什么?" 基于这个问题,我认为构造复杂度必须至少为O(nlogn).就是说,我似乎无法弄清楚如何找到构造的总复杂性. 解决方案 问题的标题和您引用的文本问的是不同的问题.我要解决报价中所说的问题,因为仅通过查看算法就可以确定BST构建的成本是多少. ..

将二叉树存储到数组中

我尝试使用以下代码将二叉树存储到数组中: public void inorderArray(int [] array){inorderArray(root,array,0);}私有静态整数inorderArray(TreeNode根,int []数组,int索引){//将项目存储在数组中的有序遍历if(root == null){返回索引;}inorderArray(root.left,arr ..
发布时间:2021-04-09 20:18:24 Java开发

生成最佳二叉搜索树(Cormen)

我正在阅读Cormen等人的《算法入门》 (第三版)( 让我们将 e [i,j] 定义为搜索包含从 i 到 j .最终,我们希望计算 e [1,n] ,其中 n 是键的数量(在此示例中为5).最终的递归公式为: 请注意,伪代码可互换地使用基于1和0的索引,而Python仅使用后者.结果,我在实现伪代码时遇到了麻烦.这是我到目前为止的内容: 将numpy导入为npp = [0.15,0 ..
发布时间:2021-04-02 20:41:30 Python

红黑树:以log(n)时间分割/连接

根据罗恩·温(Ron Wein),您能够在O(log(n))时间内对红黑树进行拆分和串联.请参阅他的文章:有效实施红黑树具有拆分和分类操作 但是我仍然不相信split的运行时间确实是正确的. 这个想法是split使用最坏情况的log(n)串联.这些连接的速度很快,因为我们可以通过记住上一个连接的p来找到p的节点. 问题在于,级联会启动修正(平衡)算法,据我所知,该算法需要O(lo ..

红黑树中的前哨节点的好处?

我创建了一个双向链接列表,并且前哨节点的好处很明显-在列表边界没有空检查或特殊情况. 现在我正在写一棵红黑树,试图弄清楚这种概念是否有好处. 我的实现基于 任何人都可以详细说明前哨节点在红黑树中的用处吗? 解决方案 红黑树实现几乎总是对所有叶子使用一个黑哨兵. 当您可以检查颜色而无需先检查null时,它将节省大量的null检查. 当然,这在使用父指针的实现中不起作 ..

如何找到树的分支因子

一个特定的搜索树在第3层有6个节点.在下一个层,有24个节点.级别3的分支因子是多少? 答案是4,但是有人可以告诉我为什么,我认为是2. 解决方案 来自维基百科: 在计算,树数据结构和博弈论中,分支因子是每个节点上的子代数,即度数.如果该值不均匀,则可以计算平均分支因子. 您在第3层有6个节点,在第4层有24个节点,因此在第3层的每个节点的平均子代数为 24/6 = 4 ..
发布时间:2021-04-02 20:33:59 其他开发

在树python中插入新值

我有一棵像这样的树 tree = [[[None,1,None],2,[None,3,None]],4,[None,6,[None,7,None]]] 数字代表每个节点的根,无代表没有值的子代. 例如,主根是4,[[None,1,None],2,[None,3,None]]是左侧的子树,而该[None,6,[None,7,无]]是他在右侧的子树.左侧子树上的主要根是2,依此类推.. ..
发布时间:2020-11-29 00:46:41 Python

排序字典自定义关键字查找以提高效率

最近,我了解到排序字典类实现了对键的二进制搜索,我想以此为自己的优势。我正在制作一个逐段线性函数类,它表示一堆线的集合 我定义了一个 Interval 类,如下所示: 公共类Interval:ICloneable,IComparable,IComparable { public Interval() { } public Interval(doub ..
发布时间:2020-10-21 23:52:52 C#/.NET