leetcode

Leetcode submissions
git clone git://git.laack.co/leetcode.git
Log | Files | Refs | README

even-odd-tree.py (1208B)


      1 # even odd tree
      2 
      3 # is only true if even layers are ascending order and odd
      4 # and odd layers are even nums and descending order
      5 
      6 # 233ms beats 53.29%
      7 # 60.06MB Beats 5.76%
      8 
      9 
     10 class Solution(object):
     11     def isEvenOddTree(self, root):
     12         lis = recurse(root, 0, [])
     13         isEven = False
     14         layer = 0
     15         for i in lis:
     16             isEven = not isEven
     17             index = 0
     18             for v in i:
     19                 if isEven:
     20                     if v % 2 == 0:
     21                         return False
     22                     if index > 0:
     23                         if lis[layer][index - 1] >= v:
     24                             return False
     25                 else:
     26                     if v % 2 != 0:
     27                         return False
     28                     if index > 0:
     29                         if lis[layer][index - 1] <= v:
     30                             return False
     31                 index += 1
     32             layer += 1
     33         return True
     34 
     35 
     36 def recurse(root, layer, lis):
     37     if len(lis) <= layer:
     38         lis.append([])
     39     lis[layer].append(root.val)
     40     if root.left is not None:
     41         recurse(root.left, layer + 1, lis)
     42     if root.right is not None:
     43         recurse(root.right, layer + 1, lis)
     44     return lis