Advertisement
Guest User

Untitled

a guest
Feb 19th, 2019
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  1. # INPUT
  2. # 1
  3. # / \
  4. # 2 2
  5. # / \ / \
  6. # 3 4 4 3
  7. #
  8. # OUTPUT True
  9. # ---
  10. # INPUT
  11. # 1
  12. # / \
  13. # 2 2
  14. # \ \
  15. # 3 3
  16. # OUTPUT False
  17.  
  18. # Definition for a binary tree node.
  19. # class TreeNode:
  20. # def __init__(self, x):
  21. # self.val = x
  22. # self.left = None
  23. # self.right = None
  24.  
  25. class Solution:
  26. def __init__(self):
  27. self.levels = []
  28.  
  29. def is_list_palindrome(self, xs):
  30. if len(xs) < 2:
  31. return True
  32. elif xs[0] == xs[-1]:
  33. return self.is_list_palindrome(xs[1:-1])
  34. else:
  35. return False
  36.  
  37. def level_order(self, root, depth):
  38. if len(self.levels) - 1 < depth:
  39. self.levels.append([])
  40.  
  41. if root is None:
  42. self.levels[depth].append(None)
  43. return
  44.  
  45. self.level_order(root.left, depth + 1)
  46. self.levels[depth].append(root.val)
  47. self.level_order(root.right, depth + 1)
  48.  
  49. def are_levels_palindromes(self, levels):
  50. if len(levels) == 0:
  51. return True
  52. elif self.is_list_palindrome(levels[0]):
  53. return self.are_levels_palindromes(levels[1:])
  54. else:
  55. return False
  56.  
  57. def isSymmetric(self, root: 'TreeNode') -> 'bool':
  58. if root is None:
  59. return True
  60. self.levels = []
  61. self.level_order(root, 0)
  62. return self.are_levels_palindromes(self.levels)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement