code: def _treeify(values):
          if len(values) == 1:
              return values
          tree = np.empty_like(values)
          last_full_row = int(np.log2(len(values) + 1) - 1)
          len_ragged_row = len(values) - (2 ** (last_full_row + 1) - 1)
          if len_ragged_row > 0:
              bottom_row_ix = np.s_[: 2 * len_ragged_row : 2]
              tree[-len_ragged_row:] = values[bottom_row_ix]
              values = np.delete(values, bottom_row_ix)
          values_start = 0
          values_space = 2
          values_len = 2 ** last_full_row
          while values_start < len(values):
              tree[values_len - 1 : 2 * values_len - 1] = values[values_start::values_space]
              values_start += int(values_space / 2)
              values_space *= 2
              values_len = int(values_len / 2)
          return tree