• 判断两棵二叉树是否相等


    #include <iostream>
    using namespace std;
    struct TNode
    {
        TNode * LeftChild;
        TNode * RightChild;
        char data;
    };
    
    TNode *CreateTree()
    {
        TNode *pRoot=NULL;
        char data=0;
        cin>>data;
        if (data=='#')
        {
            pRoot=NULL;
        }
        else
        {
            pRoot=(TNode*)malloc(sizeof(TNode));
            pRoot->data=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);
    }
  • 相关阅读:
    第5周作业
    第四周JAVA作业
    第三周JAVA学习
    第二周JAVA学习日志
    有关JAVA学习
    Swift 页面跳转
    Swift 登录判断
    单元测试学习
    WCF学习心得
    初次使用Oracle
  • 原文地址:https://www.cnblogs.com/mu-tou-man/p/3944532.html
Copyright © 2020-2023  润新知