binary-search-tree相关内容

二叉搜索树中的有序后继

给定 BST 中的一个节点,如何找到下一个更高的键? 解决方案 一般方式取决于您的节点中是否有父链接. 如果您存储父链接 然后你选择: 右孩子的最左边的孩子,如果你的当前节点有一个右孩子.如果右孩子没有左孩子,则右孩子是您的有序继承人. 向上导航父祖先节点,当您找到左子节点是您当前所在节点的父节点时,父节点是原始节点的中序后继节点. 如果您有合适的孩子,请执行此方 ..
发布时间:2021-12-06 20:17:45 其他开发

存储数字流中最大的 5000 个数字

鉴于以下问题: “存储数字流中最大的 5000 个数字" 想到的解决方案是二叉搜索树维护树中节点数的计数,并在计数达到 5000 时引用最小节点.当计数达到 5000 时,每个要添加的新数字都可以与树中最小的项进行比较.如果更大,则可以添加新数字,然后删除最小的数字并计算新的最小数字(这应该很简单,已经有了以前的最小数字). 我对这个解决方案的担忧是二叉树自然会倾斜(因为我只删除 ..
发布时间:2021-12-06 19:53:24 其他开发

在二叉搜索树中插入访问冲突错误

我正在尝试在二叉搜索树中插入节点,我在 searchNode() 函数的 if(ptr->data== item) 行遇到访问冲突错误.我怎样才能删除它.我是调试新手. 我首先尝试插入几个节点,然后使用显示功能显示它们.在插入过程中,程序会搜索要插入的节点的适当位置,然后将其插入.如果节点已经存在,程序简单地返回. #include#include#include结构节点{整数数据;结构节 ..

使用 void 函数插入二叉搜索树

我编写了两种不同的代码来插入二叉树,一种有效,另一种无效. 这是我的节点的样子: 结构节点{整数数据;节点*左;节点*右;}; 以下是node* newnode(int a) 的代码 node* newnode(int a){节点 *temp=新节点;温度->数据=a;temp->left=nullptr;temp->right=nullptr;返回温度;} 以下是两种不同的插入代 ..
发布时间:2021-10-26 18:48:22 其他开发

用 N 个给定元素构建 BST 是 O(n lg n) 吗?

使用给定的任意 N 个元素构建二叉搜索树的最坏情况时间复杂度是多少? 我认为 N 个给定元素和 一个一个接一个地出现的元素之间是有区别的,从而形成一个总共 N 个元素的 BST. 在前一种情况下,它是 O(n log n) ,第二种情况是 O(n^2) .我说得对吗? 解决方案 If 二叉搜索树 (BST) 不是完全平衡的,那么最坏情况下的时间复杂度是 O(n^2).通常,BS ..
发布时间:2021-10-26 18:38:59 其他开发

我如何编写这个算法来搜索问题树中的下一个问题?

我一直在努力为此编写正确的算法.所以我有一个看起来像这样的问题树: [{问题:“问题1",答案:{“是的": [{问题:“问题1a",答案:[“A",“B"]}],“否":空}},{问题:“问题2",答案:[“我同意"]}] 我有一个 responses 对象,它看起来像这样: [{问题:“问题1",回答:“是"},{问题:“问题1a",答案:“B"},] 也可能是这样: [{问 ..
发布时间:2021-09-09 19:38:28 前端开发

给定preOrder和inOrder序列,可能有多少个水平订单BST序列?

当我尝试打印BST级时,此问题提示了我. 这是 预购顺序:4,1,2,3,5,6,7,8顺序顺序:1、2、3、4、5、6、7、8 具有以上 pre_order 和 In_order 的BST的级别订购顺序为 [4、2、6、1、3、5、7、8] 但是,对于相同的预购订单,此级别订购序列似乎是可能的. [4、1、5、2、6、3、7、8] .我不知道我正在尝试解决这个问题. 我无 ..

二叉树:最小值和最大值之间所有节点的总和

我有一个分配给我的随机生成的BST的根目录.为此任务,我得到了随机生成的测试用例. 作业说明如下: 为您提供了二叉搜索树的根节点T和两个整数:最小值和最大值请注意,最小值和最大值不一定存储在树.确定存储在T中的所有大于或等于的键的总和等于最小值,并且小于或等于最大值.实施算法递归 不允许我使用全局变量或创建辅助函数 我当前的代码是这样: private static i ..
发布时间:2021-04-15 19:37:52 Java开发

测试八卦树

我正在尝试找到一个在线的applet来测试八卦树,但是到目前为止,我发现的这些都不满足我的需求. 我需要一些可以输入已经构造好的八叉树的东西.我有初始树,但是由于不知道其顺序而无法使用插入来构造它. 理想情况下,我正在寻找一个拖放小程序. 解决方案 我发现它可以用作对此非常有用的工具: http://www.qmatica.com/DataStructures/Trees ..
发布时间:2021-04-15 19:37:49 其他开发

以哪种方式针对X86上树中的随机值对find(value)函数进行优化的方式来实现BST的最有效方法是什么?

假设我们有一个深度为$ n $的二进制搜索树,其中每个级别都是满的,我们事先知道树的大小,并且我们将大量运行find(value)函数.我们将要查找的值(整数)将在可以存储在此bst树中的可接受值上均匀一致.在x86架构上具有此特性的BST的最有效方法是什么? 请以书面形式回答问题.任何有效果的答案,都有更好的数据结构或执行此任务的方式,对我来说都是无用的. 想到的唯一想法是将树实现为 ..
发布时间:2021-04-15 19:37:46 C/C++开发

在具有完整可复制示例C的AVL树上旋转

我已经在此功能上停留了2天,所以我想弄清楚.下面的代码是我的尝试(感谢user3386109),以便在通用节点上进行rightRotate.我认为这很接近,但问题是当我运行代码时旋转发生了,但是当我实际打印值时,似乎什么也没发生. #include#includetypedef结构树mynode;struct tree {//节点struct整数值整数 ..
发布时间:2021-04-15 19:37:39 其他开发

什么是压缩树,它如何工作?

我听说过一种新的平衡BST数据结构,称为 zip树.什么是邮编树?如何运作? 解决方案 从总体上讲,一棵zip树是 随机平衡二叉搜索树, 这是将跳过列表编码为BST的一种方式,并且 使用一对称为 zipping 和 unzipping 的操作,而不是树的旋转. 第一个要点-zip树是随机的,平衡的BST-使人感觉到zip树在较高水平上可以实现.这是一种平衡的二叉搜索树,与挖 ..
发布时间:2021-04-15 19:37:37 其他开发

AVL树删除

查找示例AVL树,以便从树中删除单个(特定)值导致重新平衡从两个不同的节点开始. 这是我的家庭作业问题.我知道什么是AVL树,但是我不明白上面的问题.有人可以照亮吗? 在两个不同的节点上重新平衡是否意味着需要两次旋转才能修复树? 解决方案 AVL重新平衡操作是特定节点需要应用一次或两次旋转以纠正树中不平衡的时间.我认为问题在于,您要寻找一种情况,其中在AVL树中进行单旋转或双旋 ..

在BST中插入元素

我正在尝试在BST中插入元素,但未获得正确的结果.除了只打印出所有数组元素,我只打印了 1,11,14 元素,而不是整个数组元素. int arr [10] = {11,2,4,23,1,98,88,65,33,14};void insertNodeinBST(int data,node ** root){节点* new_n =(node *)malloc(sizeof(node));new_ ..
发布时间:2021-04-15 19:37:31 其他开发

范围内的二进制搜索树过滤器值

我有一个由N个元素组成的树(RBT).假设我有这棵树(N = 7): 42 61 3 5 7 如何过滤某些范围内的值(例如,打印3到6之间的所有值),其性能要优于O(N)? 有没有特定的算法?我在想像是找到值为3 [log(N)]的位置,以某种方式继续下去,直到达到6 [O(M)]. 解决方案 如果您有Sedgevick的算法,第4版,请参阅第3.2章有关BST的结尾.另外, ..
发布时间:2021-04-15 19:37:28 其他开发