-----QUESTION-----
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.
class Solution {
public:
bool isSameTree(TreeNode *p, TreeNode *q) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(!p && !q) return true;
else if(!p || !q) return false;
return cmp(p, q);
}
bool cmp(TreeNode * node1, TreeNode* node2)
{
int result1 = true;
int result2 = true;
if(node1->val!=node2->val) return false;
else
{
if((node1->left==NULL && node2->left != NULL) ||
(node1->left!=NULL && node2->left == NULL)||
(node1->right!=NULL && node2->right == NULL)||
(node1->right==NULL && node2->right != NULL))
{
return false;
}
if((node1->left == NULL && node2->left == NULL)&&
(node1->right == NULL && node2->right == NULL))
{
return true;
}
if(node1->left != NULL)
{
result1 = cmp(node1->left,node2->left);
}
if(node1->right != NULL)
{
result2 = cmp(node1->right,node2->right);
}
return (result1 && result2);
}
}
};