原题:
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.
感觉本题和求树的最大深度问题相似,递归即可解决。第一次报错的原因是if语句过后的else状况分的不够清楚导致runtime error。
第二次报错则是因为读题不够仔细没有注意到还需要对比树节点的值。都是挺二的错误> / <
总结一下也是编程思路不清西, 每次用if else语句的时候一定要将所有的关系划分清楚,不要有重叠的部分,也不要有遗漏的部分,不然很容易出现runtime error。
代码如下:
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
bool isSameTree(TreeNode *p, TreeNode *q) {
if (p==NULL&&q==NULL) return true;
else if ((p==NULL&&q!=NULL)||(p!=NULL&&q==NULL)) return false;
else if (p->val==q->val)
return (isSameTree(p->left,q->left) && isSameTree(p->right,q->right));
else return false;
}
};