parameters: (self, root)
return_statement: return self.max_len
docstring: :type root: TreeNode
          :rtype: int
docstring_summary: :type root: TreeNode
          :rtype: int
docstring_tokens: : type root : TreeNode : rtype : int
function: def longestConsecutive(self, root):
          """
          :type root: TreeNode
          :rtype: int
          """
          def longestConsecutiveHelper(root):
              if not root:
                  return 0, 0
              left_len = longestConsecutiveHelper(root.left)
              right_len = longestConsecutiveHelper(root.right)
              cur_inc_len, cur_dec_len = 1, 1
              if root.left:
                  if root.left.val == root.val + 1:
                      cur_inc_len = max(cur_inc_len, left_len[0] + 1)
                  elif root.left.val == root.val - 1:
                      cur_dec_len = max(cur_dec_len, left_len[1] + 1)
              if root.right:
                  if root.right.val == root.val + 1:
                      cur_inc_len = max(cur_inc_len, right_len[0] + 1)
                  elif root.right.val == root.val - 1:
                      cur_dec_len = max(cur_dec_len, right_len[1] + 1)
              self.max_len = max(self.max_len, cur_dec_len + cur_inc_len - 1)
              return cur_inc_len, cur_dec_len
  
          self.max_len = 0
          longestConsecutiveHelper(root)
          return self.max_len
function_tokens: def longestConsecutive ( self , root ) : def longestConsecutiveHelper ( root ) : if not root : return 0 , 0 left_len = longestConsecutiveHelper ( root . left ) right_len = longestConsecutiveHelper ( root . right ) cur_inc_len , cur_dec_len = 1 , 1 if root . left : if root . left . val == root . val + 1 : cur_inc_len = max ( cur_inc_len , left_len [ 0 ] + 1 ) elif root . left . val == root . val - 1 : cur_dec_len = max ( cur_dec_len , left_len [ 1 ] + 1 ) if root . right : if root . right . val == root . val + 1 : cur_inc_len = max ( cur_inc_len , right_len [ 0 ] + 1 ) elif root . right . val == root . val - 1 : cur_dec_len = max ( cur_dec_len , right_len [ 1 ] + 1 ) self . max_len = max ( self . max_len , cur_dec_len + cur_inc_len - 1 ) return cur_inc_len , cur_dec_len self . max_len = 0 longestConsecutiveHelper ( root ) return self . max_len