c++ - 如何在深度优先搜索的递归实现中返回 bool 值?

标签 c++ function recursion binary-tree depth-first-search

我想写一个函数来检查两个二叉树是否相同。

代码如下:

bool checkSame(Node* first, Node* second) {
    // Check if nodes are the same

    // Check left nodes: checkSame(first->left, second->left)
    // Check right nodes: checkSame(first->right, second->right)

}

问题是我不确定在这里返回什么。我发现的所有 DFS 实现都有一个 void 返回值。有没有返回 bool 值的地方?

此外,我正在寻找递归解决方案,而不是迭代解决方案。

最佳答案

您的执行方式与调用其他函数而不是递归的方式完全相同。
(递归的大 secret 在于递归没有什么特别之处。)

树是相等的当且仅当

  • 节点相等,并且
  • 它的两个子树都相等

所以

return first->data == second->data 
    && checkSame(first->left, second->left)
    && checkSame(first->right, second->right);

作为练习处理剩余的空箱子。

关于c++ - 如何在深度优先搜索的递归实现中返回 bool 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45876020/

相关文章:

php - PHP 的 gc_enable 函数到底做了什么?

java - 判断树中的节点是否已满

jQuery 在 IE8 中不起作用?

java - 很难理解递归

JavaScript 递归

c++ - 在 FreeBSD 中编译 C++/OpenGL

c++ - 如何将字符串 vector 传递给 execv

c++ - 为什么指针衰减优先于推导的模板?

java - 在 C++ 中,我可以像在 Java 中一样拥有接口(interface)变量吗?

Python:这两个函数有什么问题?