/**
* 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&&!q)
return true;
else if(p&&q)
{
if(p->val==q->val) {
return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);//这部分有点乱
}
else
return false;
}
else
return false;
}
这是我自己的原创C语言代码,看过论坛之后,大家都努力减少代码行数。
一行C语言版(转载)
return ((p && q) && (isSameTree(p->left, q->left) && isSameTree(p->right, q->right) && (p->val == q->val)? true : false)) || (!p && !q);
一行Java版(转载)
public boolean isSameTree(TreeNode p, TreeNode q) {
return (p==null && q==null)|| ((p==null?'x':p.val)==(q==null?'x':q.val) &&
isSameTree(p.left, q.left) && isSameTree(p.right, q.right));
}
JS版(转载)
var isSameTree = function(p, q) {
if(p === null && q === null)
return true;
else if(p === null || q === null)//感觉原创作者这里不对,加入else应该没问题,没有验证
return false;
if(p.val === q.val && isSameTree(p.left, q.left) && isSameTree(p.right, q.right))
return true;
else
return false;
};