
- /*
-     试设计判断两课二叉树是否相似的算法。所谓二叉树T1和T2相似,指的是T1和T2都是空的二叉树或只有一个根节点;或二者左子树相似
-     且左子树相似
-     分析:
-         典型的要采取递归来处理
- */
- struct biTree {
-     char data;
-     struct biTree *lchild;
-     struct biTree *rchild;
- };
- #include <stdlib.h>
- #include <stdio.h>
- bool isSimilar(biTree *T1, biTree *T2) {
-     if (!T1 && !T2) {//T1,T2都是空的二叉树
-         return true;
-     }
-     else if (!T1 || !T2) {//T1,T2只有一个为空,则不相似
-         return false;
-     }
-     else {
-         if (isSimilar(T1->lchild, T2->lchild) && isSimilar(T1->rchild, T2->rchild))//左右子树均相似,才相似
-             return true;
-         else
-             return false;
-     }
- }
- int main() {
-     struct biTree *T1 = (struct biTree *)malloc(sizeof(struct biTree));
-     struct biTree *T2 = (struct biTree *)malloc(sizeof(struct biTree));
-     biTree *create(biTree *);
-     printf("第一棵树数据:\n");
-     T1 = create(T1);
-     printf("\n");
-     printf("第二棵树数据:\n");
-     T2 = create(T2);
-     isSimilar(T1, T2) ? printf("相似") : printf("不相似");
-     return 0;
- }