【问题标题】:How can I return a bool in a recursive implementation of depth first search?如何在深度优先搜索的递归实现中返回布尔值?
【发布时间】:2018-02-03 04:28:30
【问题描述】:

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

代码如下:

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 返回值。有没有返回布尔值的地方?

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

【问题讨论】:

  • 只要做例如return checkSame(...)?

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


【解决方案1】:

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

当且仅当这些树是相等的

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

所以

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

处理剩下的空案作为练习。

【讨论】:

    猜你喜欢
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2019-08-17
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多