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.
Subscribe to see which companies asked this question
/**
* Definition for a binary tree node.
* 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)&&(!q))
return true;
else
if(((p)&&(!q))||((!p)&&(q)))
return false;
else
if(p->val==q->val)
return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);
else
return false;
}
};
在做这题时错了好久,都不知道为什么,感觉逻辑上是没有错的。。。后来抱着试一试的心态,将p==NULL改成!p时accepted,到现在我还是不知道为什么判断是否为空时有错,明明它初始化时也是设为NULL啊