c - 检查二叉树的根是否存储了比所有子节点都大的函数

标签 c binary-tree

如果这个函数是 bool,那将会很有帮助。当我尝试这个时,函数只返回 false。

bool compare(tree *root,tree *root2){ 

if(root==NULL) return false;

    return((root->number <= root2->number) && compare(root->left, root2) 
                                           && compare(root->right, root2));
}

因此,root2 不会改变值,它的存在只是为了将根编号与所有其他编号进行比较。

最佳答案

假设您有一个看起来合理的树,以下代码段将在某个时候始终返回 false。由于您将其与您的最高级别进行比较,因此这也将是错误的。

&& compare(root->left, root2) && compare(root->right, root2)

之所以这部分分支最终总是为假,是因为第一条语句:

if(root==NULL) return false;

我认为你希望它查看 root2,而不是 root

所以,把它改成这样:

if(root2==NULL) return false;

然后在下面您可以与 root 进行比较,但它恰恰相反。

if(root==NULL) return true;

如果 root2 为 null(null 不大于任何值),你想返回 false,但如果 root 为 null(所有值都大于 null),则返回 true。

关于c - 检查二叉树的根是否存储了比所有子节点都大的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24019428/

相关文章:

c - 通过宏传递宏参数

c++ - SDL 指针和引用

java - 二叉树递归PrintInOrder函数

data-structures - 随机二叉搜索树

binary-tree - 二叉树的最小深度

C "Generic"结构构建

c++ - 声明 float ***c 的含义

c - 是否可以使用 getopt_long 来解析类似于 C 程序中的命令行参数的字符串数组?

java - 这两个查找二叉树是否等效的递归实现?

java - 为什么这些 BST 方法都不起作用?