Сумма кода leet: для двоичного дерева проверьте, является ли оно зеркалом самого себя (т. Е. Симметричным относительно его центра).
Например, это двоичное дерево [1,2,2,3,4,4,3] симметрично:
1
/ \
2 2
/ \ / \
3 4 4 3
Но следующее [1,2,2, ноль, 3, ноль, 3] не является:
1
/ \
2 2
\ \
3 3
Правильное решениеэто: -
class Solution:
def isSymmetric(self, root: TreeNode) -> bool:
if root == None:
return True
else:
return self.Tsolution(root.left, root.right)
def Tsolution(self, root1, root2):
if (root1 == None and root2 == None):
return True
if root1 == None or root2 == None:
return False
else:
return (root1.val == root2.val and self.Tsolution(root1.left, root2.right) and
self.Tsolution(root1.right, root2.left))
Мой вопрос, почему этот код неправильный? Он также выполняет проверку val, но в отдельном условии if.
class Solution:
def isSymmetric(self, root: TreeNode) -> bool:
if root == None:
return True
else:
return self.Tsolution(root.left, root.right)
def Tsolution(self, root1, root2):
if (root1 == None and root2 == None):
return True
if root1 == None or root2 == None:
return False
if root1.val == root2.val:
return True
else:
return (self.Tsolution(root1.left, root2.right) and
self.Tsolution(root1.right, root2.left))
Это дает мне ошибку во втором примере дерева, приведенном выше.