检查树节点等于一个值

Checking tree node equal to a value

我正在尝试为任意二叉树编写一个递归函数,该函数接受一个值和一个叶节点,并检查叶节点是否具有该值。这就是我现在的大致情况。

bool tree_eq(value, N* node){
  if (node == nullptr){
    return false;
    }
  else{
    if node->value == value{
      return true;
    }
    else{
      return tree_eq(value, N->left);
      return tree_eq(value, N->right);
    }

我知道我无法 return 两件事,这是我正在努力解决的部分。如果给定根而不是叶,如何递归检查右侧和左侧?谢谢

你需要知道节点是在左侧还是右侧(这边并不重要),所以你可以说:

 ...
 else {
    return (tree_eq(value,N->left) || tree_eq(value,N->right) );
 }

这些将导致深度优先搜索,其中始终考虑最左边的节点分支。

当你的树未排序时,将你的结尾 else 子句从

更改为
 return tree_eq(value, N->left);
 return tree_eq(value, N->right);

并尝试'Or'这两个结果,如

 return (tree_eq(value, N->left) ||
         tree_eq(value, N->right));

如果您的树已排序,您只需要在一侧或另一侧进行 dfs,而不是同时进行。

注意'||'如果在左分支中找到,则不会调用右分支。