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.
解题思路:题目意思是判断俩个树是否相同,然后树的问题,采用递归法是很好看出逻辑的,当前结点的几种情况如下:
C++代码:
class Solution {
public:
bool isSameTree(TreeNode* p, TreeNode* q) {
//其实下面就包括5种情况
if(p==NULL && q==NULL)
return true;
else if(p==NULL && q!=NULL)
return false;
else if(p!=NULL && q==NULL)
return false;
else if(p->val != q->val)
return false;
else
return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right); //左右子树都要相同
}
};
作者:忆臻
链接:https://zhuanlan.zhihu.com/p/24976171
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
python代码:
class Solution(object):
def isSameTree(self, p, q):
"""
:type p: TreeNode
:type q: TreeNode
:rtype: bool
"""
if p == None and q == None:
return True
elif p == None and q != None:
return False
elif p != None and q == None:
return False
elif p.val != q.val:
return False
else:
return self.isSameTree(p.left,q.left) and self.isSameTree(p.right,q.right)
作者:忆臻
链接:https://zhuanlan.zhihu.com/p/24976171
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。