Same Tree -LeetCode
题目:
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.
分析:
这道题目是分析两棵树是否相等,即结构是否相同且节点有相同的值。
在这道题目中,很重要的一点是{10,2,5} 和{10,2,#,#,5}被认为是相同的,不知道读者怎么认为,但我觉得十分的不合理啊,也许是题目认为#就是none的意思,反正这一点有些恶心。
思路是递归实现,在每次递归时判断节点值是否相同和是否一棵树有此节点而另一棵树没有(注意上面说的那个例子),如果都不满足,继续递归这个节点的左子树和右子树。
代码:
<span style="font-weight: normal;">class Solution:
# @param p, a tree node
# @param q, a tree node
# @return a boolean
def isSameTree(self, p, q):
if (not q) and (not p):
return True
if ((not q) and p) or ((not p) and q):
return False
if q.val != p.val:
return False
else:
return self.isSameTree(q.left,p.left) and self.isSameTree(q.right,p.right)</span>