题目
分析
树的题一般用递归就可以解决,每次写递归函数的时候都不知道写的全不全,结果每次都是一遍就能过= =
判断两棵树是否一样在判断的时候只要发现一处不一样,结果就是不一样。如果全部一样才一样。
经验就是一定要把根节点的情况分析清楚,可能存在可能不存在,也可能一个存在一个不存在,当两个根节点都存在的情况下数值也一样,则需要递归到它们的子节点。
题解
class Solution {
public:
bool isSameTree(TreeNode *p, TreeNode *q) {
if(p!=NULL && q==NULL || p==NULL && q!=NULL)
{
return false;
}
else if(p==NULL && q==NULL)
return true;
else
{
if(p->val != q->val)
return false;
else
{
return isSameTree(p->left,q->left) && isSameTree(p->right,q->right) ? true : false;
}
}
}
};