C++ 包含其他二叉树的二叉树

C++ 包含其他二叉树的二叉树,c++,binary-tree,C++,Binary Tree,我有一个函数,用来判断给定的二叉树a是否包含在给定的二叉树B中。该函数将“包含”定义为“a被B覆盖,或B的任何完整子树。”例如,如果树a是空树,而树B不是空树,那么a会因此包含在B中吗?如果它们都是空的呢 谢谢 在数学意义上,空集(树只是集合的特化)包含在每一个集合中,包括其他空集 所以你的两个问题都是肯定的 空集甚至有它的wiki: 无论如何,从您的实现中可以明显看出,空树包含在每个其他树中,示例实现如下所示: bool Tree::contains(const Tree& oth

我有一个函数,用来判断给定的二叉树a是否包含在给定的二叉树B中。该函数将“包含”定义为“a被B覆盖,或B的任何完整子树。”例如,如果树a是空树,而树B不是空树,那么a会因此包含在B中吗?如果它们都是空的呢


谢谢

在数学意义上,空集(树只是集合的特化)包含在每一个集合中,包括其他空集

所以你的两个问题都是肯定的

空集甚至有它的wiki:


无论如何,从您的实现中可以明显看出,空树包含在每个其他树中,示例实现如下所示:

bool Tree::contains(const Tree& otherTree)
{
   for (n: otherTree)
   {
      if (!contains(n)) 
         return false;
   }
   return true;
} 

当然,我可以想象更好的实现,特别是当对树进行排序时——但问题是,如果(n:otherTree)的
不会导致迭代,那么结果就是真的。

取决于如何定义有效的二叉树。如果这是一个作业(听起来像),请向老师说明。规范中说格式良好的树可以是:空树,也可以是包含两个格式良好的树作为“子树”、一个左“子树”和一个右子树的整数元素。