思路:采用递归的思想, 先判断两棵树的根节点的元素是否相同,再递归调用本算法依次判断两棵树根结点的每对子树是否相同。

时间复杂度:每个结点访问一次,故时间代价为O(n)。

空间复杂度:递归栈空间的大小与树的高度成正比。

程序代码:

  int same(CSTree t1,CSTree t2)

  {

    PCSNode p1,p2;

    if(t1 == NULL && t2 == NULL)

      return 1;

    if( (t1 != NULL && t2 ==NNULL) || (t1 == NULL && t2 != NULL) )

      return 0;

    if((t1->info != t2->info)

      return 0;

    p1 = t1->lchild;

    p2 = t2->lchild;

    while(p1 != NULL && p2 != NULL)

    {

      if(same(p1,p2) == 0)

        return 0;    //两棵树根结点的某对子树不相同

      p1 = p1->rsibling;

      p2 = p2->rsibling;

    }

    if(p1 == NULL && p2 == NULL)

      return 1;      //两棵子树根结点的每对子树都相同

    return 0;        //两棵子树根结点的子树个数不相等

  }

相关文章:

  • 2021-09-23
  • 2021-10-30
  • 2022-12-23
  • 2021-07-24
  • 2021-12-08
  • 2021-11-01
猜你喜欢
  • 2021-05-22
  • 2021-08-24
  • 2022-12-23
  • 2022-01-12
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案