1.给定两个二叉树,编写一个函数来检验它们是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
2.代码展示
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
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);
}
3.解题思路
先判断是否都为空树,如果是就返回ture,在判断是否有一个空树,是就返回false,运行到这里说明,两个树都不为空,我们比较他的val,如果不相等就返回false,相等的话,就遍历它的左右子树,直到不符合条件跳出,或者递归完成。