首页 > 代码库 > 判断两棵二叉树是否相等

判断两棵二叉树是否相等

#include <iostream>using namespace std;struct TNode{    TNode * LeftChild;    TNode * RightChild;    char data;};TNode *CreateTree(){    TNode *pRoot=NULL;    char data=http://www.mamicode.com/0;    cin>>data;    if (data=http://www.mamicode.com/=#)    {        pRoot=NULL;    }    else    {        pRoot=(TNode*)malloc(sizeof(TNode));        pRoot->data=http://www.mamicode.com/data;        pRoot->LeftChild=CreateTree();        pRoot->RightChild=CreateTree();    }    return pRoot;}int isTreeEqual(TNode *root1,TNode *root2){    bool isTree1NULL=(root1==NULL);    bool isTree2NULL=(root2==NULL);    if (isTree1NULL!=isTree2NULL)//两节点不等    {        return 0;    }    if (isTree2NULL&&isTree1NULL)//两颗树都为空 相等    {        return 1;    }    if (root1->data!=root2->data)    {        return 0;    }    return        (            isTreeEqual(root1->LeftChild,root2->LeftChild)&            isTreeEqual(root1->RightChild,root2->RightChild)        )        |        (            isTreeEqual(root1->LeftChild,root2->RightChild)&            isTreeEqual(root1->RightChild,root2->LeftChild)         );}void main(){    TNode *root1=CreateTree();    TNode* root2=CreateTree();    cout<<isTreeEqual(root1,root2);}

 

判断两棵二叉树是否相等