PTA:树的同构 (25分) C语言

本文详细介绍了如何解决PTA平台上的树的同构问题,通过C语言编程实现,深入探讨了二叉树的性质和比较方法,帮助读者理解算法并掌握树的同构判断技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include<stdio.h>
#include<stdlib.h>
typedef struct node{
    char data;
    int left,right;
}node;
node tree1[15];
node tree2[15];
int createtree(node tree[]){
    int n;
    char a,b;
    scanf("%d",&n);
    getchar();
    if(n==0)
        return -1;
    int check[15]={0};
    for(int i=0;i<n;i++){
        scanf("%c %c %c",&tree[i].data,&a,&b);
        if(a!='-'){
            tree[i].left=a-'0';
            check[tree[i].left]=1;
        }
        else tree[i].left=-1;
        if(b!='-'){
            tree[i].right=b-'0';
            check[tree[i].right]=1;
        }
        else tree[i].right=-1;
        getchar();
    }
    for(int i=0;i<n;i++){
        if(!check[i])
            return i;
    }
}
int match(int root1,int root2){
    if(root1==-1&&root2==-1)
        return 1;
    if(root1==-1||root2==-1)
        return 0;
    if(tree1[root1].data!=tree2[root2].data)
        return 0;
    if(match(tree1[root1].left,tree2[root2].left)&&match(tree1[root1].right,tree2[root2].right))
        return 1;
    if(match(tree1[root1].left,tree2[root2].right)&&match(tree1[root1].right,tree2[root2].left))
        return 1;
    else
        return 0;
}
int main(){
int root1=createtree(tree1);
int root2=createtree(tree2);
if(match(root1,root2))
    printf("Yes");
else
    printf("No");
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值