当前位置: 首页 > 知识库问答 >
问题:

二进制搜索树节点大小

章丰茂
2023-03-14

我对如何在二叉查找树中排列节点的顺序有点困惑。左边的二叉查找树中的子树节点能比根节点大吗?

例如,以下内容会是二叉搜索树吗?

    2
   / \
  1   4
 / \
    3

上面让我困惑的是1(3)的右子树是否可以大于原始根节点(2)。

共有1个答案

勾海超
2023-03-14

不,左边的节点不能大于根。二叉查找树具有以下属性(来自wiki):

    < li >节点的左子树仅包含键小于该节点键的节点。 < li >节点的右侧子树仅包含键大于或等于该节点键的节点。 < li >左右子树也必须是二分搜索法树。
 类似资料:
  • 目前,我在理解如何在没有传递节点时从二进制搜索树中删除节点时遇到了一个问题。我有两个类,BSTSet和BSTNode,每个类都有一个remove方法。。 当我被传递一个节点时,我理解删除方法,但当我在根上调用remove方法并试图从node类中删除节点时,我不知道从何处开始。有人能告诉我吗?谢谢如果您想了解更多信息,请询问。

  • 我目前正在做一个学校项目,我必须为二叉搜索树编写一些辅助函数。其中一个函数从树中删除了一个节点。我正在尝试运行一些测试用例,但似乎无法让它们正常工作。我知道这个问题与我如何使用指针有关,但我不太确定我哪里出错了。 这是代码: 注意:我没有包括leftRoot()函数,但它相当简单,我知道它做了它应该做的事情(返回子树中最左边的根)下面是我的教授给我们的测试remove函数的代码部分: 如果有必要,

  • 我想找到最有效的方法来检查二进制搜索树中最小值的节点。我现在不想用某种编程语言来做,我只想考虑最有效的算法。 对此你怎么看: 我的问题是我应该如何深入挖掘,直到我得到最后一个左节点。我也试着解释这些步骤。你认为那是做这件事的最好方法吗?

  • 我正在尝试删除我的二叉查找树的根,以便我可以更新它的值,但这种方法不能做到这一点。我的想法是删除根,然后将其再次插入二叉查找树中,但使用另一个值。它适用于树中的每个节点,但不是我无法删除它的根本原因。有人知道为什么会发生这种情况吗?谢谢。 这是我调用方法删除任何节点的主代码,在这种情况下,我想删除根。

  • 您好,我正在尝试以的格式打印二进制搜索树的级别顺序。我目前正在使用队列来获取级别顺序,但很难获取父节点。可以处理队列吗?如果是这样的话,我该怎么做呢?如果不是的话,什么是更理想的方法?非常感谢。 例如,使用以下树: 级别0:(6,空) 一级:(5,6)(7,6)

  • 给定二叉查找树(BST)和整数val的根。 在BST中找到该节点的值等于val的节点,并返回以该节点为根的子树。如果这样的节点不存在,则返回null。 为什么'ans=root'不起作用??