如何判断一个树是不是另外一个二叉树的子树呢?

请教大神们一个数据结构的问题,才学,琢磨很久没想出来图片说明

//判断root2是不是root1开头的子结构

boolIsSubTree(BiTreeNode *root1,BiTreeNode *root2)

{

   //先判断root2

   if(root2==NULL)

          return true;

   if(root1==NULL)

          return false;    

   if(root1->data!=root2->data)

          return false;

   returnIsSubTree(root1->LC,root2->LC) &&IsSubTree(root1->RC,root2->RC);

}

//递归查找以root1为节点的树中,是否有和root2相同的值,如果有,则调用IsSubTree(root1, root2);

boolCheckIfSubTree(BiTreeNode *root1,BiTreeNode *root2)

{

   if(root1==NULL)

          return false;

   bool result=false;

   if(root1->data==root2->data)

          result=IsSubTree(root1,root2);

   if(result==false)

          result=CheckIfSubTree(root1->LC,root2);

   if(result==false)

          result=CheckIfSubTree(root1->RC,root2);

   return result;

}

首先在二叉树p中遍历寻找c的根节点,如果找到了,从这个节点开始遍历二叉树p,并且判定如果所有p对应的子节点都在c中出现,并且c不存在的p也不存在。就符合条件。