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.

 

C++代码如下:

#include<iostream>

#include<new>

using namespace std;



//Definition for binary tree

struct TreeNode

{

    int val;

    TreeNode *left;

    TreeNode *right;

    TreeNode(int x) : val(x), left(NULL), right(NULL) {}

};



class Solution {

public:

    bool isSameTree(TreeNode *p, TreeNode *q) {

        if(p==NULL&&q==NULL)

            return true;

        if(p==NULL||q==NULL)

            return false;

        if(p->val==q->val&&p->left==NULL&&q->left==NULL&&p->right==NULL&&q->right==NULL)

            return true;

        return (p->val==q->val)&&isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);

    }

      void createTree(TreeNode *&root)

    {

        int i;

        cin>>i;

        if(i!=0)

        {

            root=new TreeNode(i);

            if(root==NULL)

                return;

            createTree(root->left);

            createTree(root->right);

        }

    }

};



int main()

{

    Solution s;

    TreeNode *root1=NULL;

    TreeNode *root2=NULL;

    s.createTree(root1);

    s.createTree(root2);

    cout<<s.isSameTree(root1,root2)<<endl;

}

 

你可能感兴趣的:(tree)