如何检查树是否是BST?

模板男孩

我必须检查一棵树是否是二叉搜索树。我正在使用临时数组遍历此遍历,该临时数组收集值。我必须检查数组是否升序,如果是则返回true:

bool myisBST(Node* node, std::vector<int> v);

bool myisBST(Node* node)
{
    return myisBST(node, std::vector<int>());
}

bool myisBST(Node* node, std::vector<int> v)
{
    if (node)
    {
        if (node->left)
            return myisBST(node->left, v);

        v.push_back(node->data);

        if (node->right)
            return myisBST(node->right, v);
    }

    return std::is_sorted(v.begin(), v.end());
}

当二叉树是:

            50
           /  \
         25    75
        /  \   / \
       1   12 62 -99

如您所见,-99使得它不是二进制搜索树,但它仍然返回true。我的实现有问题吗?

Demo

丹尼尔·克莱因斯坦

两个问题:

  1. 在中myisBST,您v传递,而不是按引用传递,因此当递归传递向量时,对其所做的更改不会在调用方法中更改其值。只需更改功能签名bool myisBST(Node* node, std::vector<int>& v)即可解决此问题。
  2. 您应该返回的值是向量是否已排序(就像您在方法的最后一行中所做的那样),但是相反,您通过编写return myisBST(node->left, v);和来过早返回return myisBST(node->right, v);您实际上对这些方法的返回值不感兴趣。您只是使用它们来填充向量顺序。return从这两行中删除

遵循这两个修复程序,您的方法将起作用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何检查二叉树是否是BST?

来自分类Dev

检查一棵树是否是二叉搜索树(BST)

来自分类Dev

如何检查给定的生成树是否是MST

来自分类Dev

检查树是否为BST的此方法有什么问题

来自分类Dev

检查二进制树是否为BST的函数始终返回true

来自分类Dev

检查树是否是堆

来自分类Dev

这个函数是否可以检查 BST(二叉搜索树)是否有效工作 Python

来自分类Dev

如何检查树中是否存在父/子关系?

来自分类Dev

如何检查二叉搜索树是否完美平衡?

来自分类Dev

如何运行BST树功能的高度

来自分类Dev

检查树是否完整的算法

来自分类Dev

检查单向图是否为树

来自分类Dev

检查2棵树的顺序是否相同

来自分类Dev

在Prolog中检查元素是否在树中

来自分类Dev

检查单向图是否为树

来自分类Dev

检查树中的节点是否已删除

来自分类Dev

AVL树是否必须满足BST的特性才能被视为AVL树?

来自分类Dev

判断树是否为二叉搜索树(BST)的递归函数(修改后的代码)

来自分类Dev

检查树是否是另一棵树的子树

来自分类Dev

使用Prolog检查树是否是二叉树

来自分类Dev

如何计算空间复杂度以检查二进制搜索树是否平衡?

来自分类Dev

如何检查给定的preorder,inorder和postorder遍历是否相同的二叉树?

来自分类Dev

如何计算空间复杂度以检查二进制搜索树是否平衡?

来自分类Dev

如何检查给定的preorder,inorder和postorder遍历是否相同的二叉树?

来自分类Dev

当目录不是当前工作目录时,如何检查目录是否在 git 工作树中?

来自分类Dev

检查给定的遍历是否有效的BST

来自分类Dev

如何检查React Native应用的DOM树?

来自分类Dev

如何编写一个函数来检查给定的二叉搜索树是否包含给定的值?

来自分类Dev

检查两棵树是否相同

Related 相关文章

  1. 1

    如何检查二叉树是否是BST?

  2. 2

    检查一棵树是否是二叉搜索树(BST)

  3. 3

    如何检查给定的生成树是否是MST

  4. 4

    检查树是否为BST的此方法有什么问题

  5. 5

    检查二进制树是否为BST的函数始终返回true

  6. 6

    检查树是否是堆

  7. 7

    这个函数是否可以检查 BST(二叉搜索树)是否有效工作 Python

  8. 8

    如何检查树中是否存在父/子关系?

  9. 9

    如何检查二叉搜索树是否完美平衡?

  10. 10

    如何运行BST树功能的高度

  11. 11

    检查树是否完整的算法

  12. 12

    检查单向图是否为树

  13. 13

    检查2棵树的顺序是否相同

  14. 14

    在Prolog中检查元素是否在树中

  15. 15

    检查单向图是否为树

  16. 16

    检查树中的节点是否已删除

  17. 17

    AVL树是否必须满足BST的特性才能被视为AVL树?

  18. 18

    判断树是否为二叉搜索树(BST)的递归函数(修改后的代码)

  19. 19

    检查树是否是另一棵树的子树

  20. 20

    使用Prolog检查树是否是二叉树

  21. 21

    如何计算空间复杂度以检查二进制搜索树是否平衡?

  22. 22

    如何检查给定的preorder,inorder和postorder遍历是否相同的二叉树?

  23. 23

    如何计算空间复杂度以检查二进制搜索树是否平衡?

  24. 24

    如何检查给定的preorder,inorder和postorder遍历是否相同的二叉树?

  25. 25

    当目录不是当前工作目录时,如何检查目录是否在 git 工作树中?

  26. 26

    检查给定的遍历是否有效的BST

  27. 27

    如何检查React Native应用的DOM树?

  28. 28

    如何编写一个函数来检查给定的二叉搜索树是否包含给定的值?

  29. 29

    检查两棵树是否相同

热门标签

归档