#python #tree
Вопрос:
Я пишу код, чтобы проверить, совпадают ли два дерева, но мне нужна помощь, чтобы определить, чем отличается написанный мной код от фактического решения.
вот мой код:
class Solution:
def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
if not p or not q:
return False
if not p and not q:
return True
if p.val != q.val:
return False
return self.isSameTree(p.right,q.right) and self.isSameTree(p.left,q.left)
И вот правильный код:
class Solution:
def isSameTree(self, p, q):
if not p and not q:
return True
if not q or not p:
return False
if p.val != q.val:
return False
return self.isSameTree(p.right, q.right) and
self.isSameTree(p.left, q.left)
Комментарии:
1.
if not p and not q:
никогда не будет правдой в вашей версии, потому что предыдущаяif
уже имела бы дело с этим (более сильным) условием. Порядок важен.
Ответ №1:
Условие if not p or not q:
содержит случай, когда p и q отсутствуют, и в этом случае два дерева, очевидно, совпадают, когда в вашем коде вы возвращаетесь False
.