题目传送门
思路就是递归比较,这里用python、c++两种语言写的,不得不说,python就是慢很多,我python 32ms超过80%,c++ 4ms超过60%。
/**
* 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 isSame(TreeNode* p,TreeNode* q)
{
if(p==NULL&&q==NULL)
{
return true;
}
if(p==NULL&&q!=NULL||p!=NULL&&q==NULL)
{
return false;
}
if(p->val==q->val)
{
return isSame(p->left,q->left)&&isSame(p->right,q->right);
}
else
{
return false;
}
}
bool isSameTree(TreeNode* p, TreeNode* q)
{
return isSame(p,q);
}
};
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def isSame(self,p,q):
if p==None and q==None:
return True
if p==None and q!=None or q==None and p!=None:
return False
if p.val==q.val:
return self.isSame(p.left,q.left) and self.isSame(p.right,q.right)
else:
return False
def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
return self.isSame(p,q)