回报陈述中的比较

时间:2018-03-18 15:12:07

标签: c return

有人可以解释这个退货声明:

return
    (
        a->data == b->data &&
        identicalTrees(a->left, b->left) &&
        identicalTrees(a->right, b->right)
    )

1 个答案:

答案 0 :(得分:1)

如果括号中的条件为真,则返回true,如果A部分为真且部分B为真且部分C为真,则括号中的三部分条件为真。

这是一个“压缩”表达式。如果将它与这个“扩展”版本进行比较可能会更容易理解,它完全相同:

if(a->data == b->data &&
    identicalTrees(a->left, b->left) &&
    identicalTrees(a->right, b->right) ) {
        return TRUE;
} else {
        return FALSE;
}

更具体地说,看起来它是“深度”二叉树相等性测试的递归实现的一部分:给定两个树节点的指针,如果它们的数据相同则指向相同的树,并且它们的左子树是同样的,他们的右子树是一样的。