
利用分治思想,将大问题化解成为小问题,我们只需要比较:
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);
}
文章介绍了如何使用分治思想解决二叉树同构问题,通过C语言中的递归函数isSameTree,展示了如何判断两棵二叉树是否相同。这个基础题目与LeetCode上的其他相关二叉树问题紧密相连,如子树翻转和对称二叉树。
1024

被折叠的 条评论
为什么被折叠?



