Advertisement
jinhuang1102

100. Same Tree

Nov 13th, 2018
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.81 KB | None | 0 0
  1. #100. Same Tree
  2. #   这道题有两种方法。第一种是用递归的方法,一个一个的比较,只要不相等就直接返回False。这种方法比较慢
  3. class Solution:
  4.     def isSameTree(self, p, q):
  5.         """
  6.        :type p: TreeNode
  7.        :type q: TreeNode
  8.        :rtype: bool
  9.        """
  10.         if not p and not q:
  11.             return True
  12.  
  13.         if not p or not q:
  14.             return False
  15.  
  16.         if p and q and p.val == q.val:
  17.             left = self.isSameTree(p.left, q.left)
  18.             right = self.isSameTree(p.right, q.right)
  19.             return left and right
  20.  
  21.         return False
  22.  
  23. # 第二种方法是用 level order 的方法把 tree 转化成array然后进行比较
  24. from collections import deque
  25. class Solution2:
  26.     def inorder(self, root, res):
  27.         q = deque()
  28.         q.append(root)
  29.         while q:
  30.             num = len(q)
  31.             for i in range(0, num):
  32.                 node = q.popleft()
  33.                 if node:
  34.                     res.append(node.val)
  35.                     if node.left:
  36.                         q.append(node.left)
  37.                     else:
  38.                         q.append(None)
  39.                     if node.right:
  40.                         q.append(node.right)
  41.                     else:
  42.                         q.append(None)
  43.                 else:
  44.                     res.append(node)
  45.  
  46.     def isSameTree(self, p, q):
  47.         """
  48.        :type p: TreeNode
  49.        :type q: TreeNode
  50.        :rtype: bool
  51.        """
  52.  
  53.         res1 = []
  54.         res2 = []
  55.         self.inorder(p, res1)
  56.         self.inorder(q, res2)
  57.  
  58.         if len(res1) != len(res2):
  59.             return False
  60.         else:
  61.             for i in range(0, len(res1)):
  62.                 if res1[i] != res2[i]:
  63.                     return False
  64.             return True
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement