利用分治思想,将大问题化解成为小问题,我们只需要比较:
1. 根节点的同时为空/不为空,不为空时值相等。
2. 左子树是否一样。
3. 右子树是否一样。
可以看出,这道题非常简单,但是为什么我们还要将它呢,因为它足够基础,与后面的许多基础题目相关联,例如:
......
因为,我们使用的是C语言写题目,所以需要自己造轮子,如果我们把这道题理解掌握,日后我们在写上面链接的题目时,只需要CV这段代码即可。
bool isSameTree(struct TreeNode* p, struct TreeNode* q) {
//都为空
if(p == NULL && q==NULL)
{
return true;
}
//其中一个为空
if((p==NULL || q ==NULL))
{
return false;
}
//都不为空且不相等
if(p->val != q->val)
{
return false;
}
return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);
}