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

检查给定树是否允许重复是二叉查找树

夏景同
2023-03-14

我知道如何检查给定的树是否是二叉树。但问题是,如果树包含重复的值,该怎么办。

如何检查可能包含重复值的树是否是二叉查找树重复值必须位于树/子树的右侧。

共有1个答案

伏建修
2023-03-14

在二进制搜索树程序中,当您添加检查右侧的树是否为BST时,请检查右侧的值是否大于或等于。例如,

bool BST(BinaryTree root){
 bool returnValue=false;
  if(root!=null){
    if(root.left!=null){
      if (root.left.data < root.data){
       returnValue=BST(root.left);
      }
    }
    if(root.right!=null){
       if(root.right.data >= root.data){
          returnValue=BST(root.right);
       }
   }
   return returnValue;
 }
}
 类似资料:
  • QSTN:当它是叶节点时,为什么需要初始化ls=0或rs=0。考虑链接中给出的树,如果我们到达节点4,如果(node==NULL isLeaf(node))返回1;上面的代码将1(true)返回到调用它的函数,即节点10,类似地,右侧将true返回到节点10,因此我们现在可以进入下面的循环,因为如果(isSumTree(node->left)&&isSumTree(node->left)&&isS

  • 我实现了下面的C代码,以检查二叉树是否平衡,即左右子树的高度相差最多1。但是,我不确定它是否有效,或者以错误的方式重复检查子树。有人能引导我吗?

  • 我正试图解决这个问题,但我遇到了一些麻烦: 在二进制搜索树(BST)中: 节点左子树中每个节点的数据值小于该节点的数据值。 节点右侧子树中每个节点的数据值大于该节点的数据值。 如您所见,节点(4)位于节点(3)的左侧子树中,尽管4大于3,因此方法应该返回。但是,我的代码返回。 我怎么能控制这个案子?如何检查左/右子树中的所有值都低于/大于根(不仅是直接子树)?

  • 我写了一个函数,如果给定的二叉树是二叉搜索树,则返回true,否则返回false。 我的功能对吗?

  • 我需要编写伪代码来检查有效的二叉树是否是搜索二叉树。 我创建了一个数组来保存树的顺序值。如果顺序值是降序的,这意味着它确实是BST。然而,我对INOVERAR方法中的递归有一些问题。 我需要更新数组的索引,以便按照值在树上的顺序将其提交给数组。 我不确定在递归过程中索引是否真的得到了正确更新。。到底是不是?如果你发现问题,能帮我解决吗?谢谢 伪代码 第一功能 IsBST(节点) 大小← 树化(节点