首页 > 代码库 > Same Tree

Same Tree

Given two binary trees, write a function to check if they are equal or not.

Two binary trees are considered equal if they are structurally identical and the nodes have the same value.


#include<stdio.h>
#include<stdlib.h>

typedef struct TreeNode {
     int val;
     struct TreeNode *left;
     struct TreeNode *right;
 //    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
}TreeNode;

TreeNode *create(TreeNode *p)
{
    char c;
    scanf("%c",&c);
    if(c=='#') p=NULL;
    else{
        p=(TreeNode *)malloc(sizeof(TreeNode));
        p->val=c;
        p->left=create(p->left);
        p->right=create(p->right);
    }
    return p;
}

void mintravel(TreeNode *p)
{
    if(p!=NULL){      
        mintravel(p->left);
        printf("%c",p->val);
        mintravel(p->right);
    }
}

int isSameTree(TreeNode *p, TreeNode *q)
{
    if(p!=NULL && q!=NULL){
        if(p->val != q->val) return 0;
        return isSameTree(p->left,q->left) && isSameTree(p->right,q->right);
    }
    if((p!=NULL && q==NULL)||(p==NULL && q!=NULL)) return 0;
    else return 1;
}

void main()
{
    
    TreeNode *p=create(p);
    TreeNode *q=create(q);
    mintravel(p);
    printf("\n");
    mintravel(q);
    printf("\n%d\n",isSameTree(p,q));
}


Same Tree