题目:
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.
我的解法:(1)算法思想:
如果两个树都是空树,返回相等;如果一个空,另一个非空,返回不相等;如果当前结点的值相等,递归判断左右子树。
要注意的是,不可以用if(p!=q)来判断当前结点是否不等,而应该用if(p->val!=q->val),因为p、q是两个不同的指针,而这里是判断其所指的值是否相等。
(2)代码如下:
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!=q)//这种判断方法不对,因为p,q不是同一颗树。
else if(p->val!=q->val)
return false;
return(isSameTree(p->left,q->left)&&isSameTree(p->right,q->right));
}
};