C++ 检查树节点是否等于某个值

C++ 检查树节点是否等于某个值,c++,recursion,tree,C++,Recursion,Tree,我试图为任意二叉树编写一个递归函数,该二叉树接受一个值和一个叶节点,并检查叶节点是否具有该值。这大概就是我现在拥有的 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

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

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);
    }

我知道我不能归还两件东西,这是我正在努力解决的问题。如果给定的是根而不是叶,如何递归地检查右侧和左侧?谢谢

您需要知道节点是在左侧还是右侧(侧边并不重要),因此您可以说:

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

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

您需要知道节点是在左侧还是右侧(与侧边无关),因此您可以说:

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

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

当树未排序时,请将ending else子句从

 return tree_eq(value, N->left);
 return tree_eq(value, N->right);
并尝试“或”这两个结果,如

 return (tree_eq(value, N->left) ||
         tree_eq(value, N->right));
如果对树进行了排序,则只需将dfs放在一侧或另一侧,而不需要同时放在两侧


请注意,如果在左分支中找到“| |”将不会调用右分支。

如果树未排序,请将ending else子句从

 return tree_eq(value, N->left);
 return tree_eq(value, N->right);
并尝试“或”这两个结果,如

 return (tree_eq(value, N->left) ||
         tree_eq(value, N->right));
如果对树进行了排序,则只需将dfs放在一侧或另一侧,而不需要同时放在两侧


请注意,如果在左分支中找到“| |”将不会调用右分支。

如果给定的节点是根,那么我必须向左和向右走?在找到值之前,您将始终向左和向右走。但是,如果某个结果为真,则一切正常。我不知道| |如何确保双方都得到检查。如果我从根开始,它的2个叶子不==这个值,它会随机检查右边或左边,但不是两个。这就是我从| |中得到的,你将检查左侧,如果该侧为负数(未找到),你将检查右侧。这不是你想要的吗?我想我现在得到了。我和return(…)| | return(…)混在一起了。谢谢,如果给定的节点是根节点,那么我必须向左和向右走怎么办?在找到值之前,您将始终向左和向右走。但是,如果某个结果为真,则一切正常。我不知道| |如何确保双方都得到检查。如果我从根开始,它的2个叶子不==这个值,它会随机检查右边或左边,但不是两个。这就是我从| |中得到的,你将检查左侧,如果该侧为负数(未找到),你将检查右侧。这不是你想要的吗?我想我现在得到了。我和return(…)| | return(…)混在一起了。非常感谢。