binary-search-tree 相关问题

二叉搜索树是由具有左子节点和右子节点的根节点组成的数据结构。左节点及其所有后代的值小于根节点,而右节点及其所有后代的值大于根节点。根节点的子节点遵循相同的模式。这给了我们一个由有序元素组成的树。

查找存储在二叉搜索树中的单词的所有前缀

我有一个存储字符串的二叉搜索树。字符串按字典顺序进行比较(使用 c 中的 strcmp)。 给定一些输入字符串,我想检索该字符串的所有前缀的列表......

回答 1 投票 0

查找存储在 BST 中的单词的所有前缀

我有一个存储字符串的二叉搜索树。字符串按字典顺序进行比较(使用 c 中的 strcmp)。 给定一些输入字符串,我想检索该字符串的所有前缀的列表...

回答 1 投票 0

在二叉搜索树中插入重复值

我可以在二叉搜索树中插入相同的值吗? 如果可以的话,这个插入应该发生在具有该值的现有节点的左侧还是右侧? 我可以向这棵树插入 23 吗?

回答 1 投票 0

二叉搜索树可以只有两个分支吗?

根据 GeeksForGeeks 的说法,在以下情况下,二叉树是 BST: 节点的左子树仅包含键小于该节点键的节点。 节点的右子树仅包含具有 k...

回答 3 投票 0

在由 1 到 (2^K) 的每个数字填充的完整 BST 中查找缺失值,其中 K 是级别数

令 K 为二叉搜索树的层数。因此,我可以拥有的最大节点数是 (2^K)-1。我有一个完整的二叉树(即,每个级别都被完全填充),w...

回答 1 投票 0

调试 void* 函数时出现非法指令

我编写了这段代码来实现 BST: 一个 Node 有 4 个属性:1 个 int val、1 个指向其父节点的指针、1 个指向其左子节点的指针、1 个右子节点。我写了 2 个方法:1 个用于插入,1 个用于

回答 1 投票 0

有人可以解释一下为什么这个解决方案不起作用吗?

问题: 您已获得一棵包含“N”个节点的二叉树,其中节点具有整数值。您的任务是返回二叉树(也是 BST)的最大子树的大小。 二进制

回答 1 投票 0

二叉搜索树的最低公共祖先在长输入情况下失败

问题 给定二叉搜索树 (BST),找到 BST 中两个给定节点的最低公共祖先 (LCA) 节点。 根据维基百科上LCA的定义: “最低的共同祖先是...

回答 1 投票 0

C++:删除节点并返回其右子节点的程序:

我试图解决删除 BST 中节点的问题,并看到一个奇怪的输出。在节点只有右子节点的情况下,我试图删除该节点并返回其右子节点。

回答 1 投票 0

二叉搜索树删除而不复制

在编写简单的二叉搜索树数据结构(非自平衡)时,大多数资源在删除具有两个子节点的节点时给出的建议是将数据复制到左侧的一个节点中......

回答 3 投票 0

我无法使用递归获取BST的特定节点。即它擦除的每个堆栈

全局nodeM 节点M=无 def inorderTraversal(self, root: 'TreeNode', tval:int) -> 'TreeNode': #如果(节点M): #print("sdf", 类型(nodeM)) #节点=无 如果根: ...

回答 1 投票 0

为什么我在 BST 中的遍历没有显示出示例输出那样的结果?

我的问题是关于遍历。在我的问题中,遍历的顺序没有遵循应有的顺序。我正在使用中序、前序和后序遍历的一般逻辑,但它是

回答 1 投票 0

BST 为了预购和后购

我有一个有序形式的二叉搜索树。我需要了解这棵树的样子。我还需要同一棵树的预购和后购。在这方面需要帮助。 按顺序:7、5、3...

回答 1 投票 0

二叉搜索树 - 父节点方法错误输出

此函数在二叉搜索树中搜索键并返回等于键的节点的父节点。但由于某种原因,当我调用此函数时,我的输出仍然为 None。我的测试看起来...

回答 1 投票 0

二叉搜索树 - 输出不正确的节点计数方法

所以基本上,正如您从函数定义中看到的那样,该函数应该确定二叉搜索树的节点类型,我没有收到错误,但我不认为我的输出是c...

回答 1 投票 0

查找二叉搜索树中第 n 个最小的元素

我编写了一种算法,用于在 BST 中查找第 n 个最小元素,但它返回根节点而不是第 n 个最小元素。因此,如果您按顺序输入节点 7 4 3 13 21 15,则此算法经过 cal...

回答 3 投票 0

返回多个int值

我创建了一个 BST 表,其中包含两个整数列 Node 和 Parent。我向该表中插入一些值,我想检测叶节点、内部节点和根节点。 代码: 创建二叉搜索树表 ( 节点整数, ...

回答 4 投票 0

如何在SQL Server 2019中返回多个int值?

我创建了一个 BST 表,其中有两列 Node 和 Parent 作为整数数据类型。我在这个表中插入一些值,我想检测叶节点、内部节点和根节点。 代码: 创建表 B...

回答 1 投票 0

用于莫尔斯电码转换的二叉搜索树

我正在使用二叉搜索树进行莫尔斯转换。 (是的,我知道这对于这项任务来说不是必需的,但这是为了学校作业。) 作为我的将军,我对如何解决这个问题感到困惑

回答 1 投票 0

删除 BST 中的最终节点导致故障

我正在用 C++ 构建一个二叉搜索树,它由包含指向父级的指针、指向左右子级的指针、整数键和模板值的节点组成,如下所示。 模板 我正在用 C++ 构建一个二叉搜索树,它由包含指向父级的指针、指向左右子级的指针、整数键和模板值的节点组成,如下所示。 template <class T> class Node { private: Node<T>* parent; Node<T>* left; Node<T>* right; unsigned int key; T value; public: /*constructors, accessors, mutators, rotating functions are here*/ 我为树本身提供了一个单独的类,主要用于插入、平衡树、搜索和删除节点。在此类中,删除节点的函数采用一个键并从树中删除该节点。到目前为止,我已经验证了所有旋转、平衡、插入和访问功能都可以正常工作。在创建从树中删除节点的函数时,我在删除根时遇到了一个问题。下面是删除功能。 //This currently is only for deleting leaf nodes void remove(unsigned int key) { //Find the node being deleted Node<T>* delnode = this->select(key); if (!delnode) { return; }; //If the value is a leaf node if (!delnode->getLeft() && !delnode->getRIght()) { //Store the parent node Node<T>* parent = delnode->getParent(); //The node is both root and leaf if (!parent) { delete delnode; return; }; //If the node is not a root, clip the parent connection if (delnode->getKey() < parent->getKey()) { parent->setLeft(NULL); delnode->setParent(NULL); } else if (delnode->getKey() > parent->getKey()) { parent->setRight(NULL); delnode->setParent(NULL); }; //Delete the node now delete delnode; return; }; }; 可靠导致错误的最小代码部分是上述函数的以下部分。 if (!parent) { delete delnode; return; }; 据我验证,代码的其他部分可以正常工作,并正确删除叶节点。删除树的根(无论它是否曾经有子树)会导致“double free();”程序退出时出错。 我在之前的代码中找不到会导致使用“delete”抛出“double free();”的错误错误,可能是什么原因? 我为树本身有一个单独的类,... 大概,这个类维护了一个指向树的指针: template <class T> class BTree { Node<T>* root; // ... } 函数remove删除根节点后,必须将root指针设置为nullptr。 现在发生的事情是: 在函数remove中,根被删除一次,如delnode。 在类BTree的析构函数中被第二次删除。 因此,双重释放错误。

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.