Generated by Cython 0.29.32

Yellow lines hint at Python interaction.
Click on a line that starts with a "+" to see the C code that Cython generated for it.

Raw output: _binary_tree.c

+01: def test_binary_tree():
/* Python wrapper */
static PyObject *__pyx_pw_2bp_12_binary_tree_1test_binary_tree(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_2bp_12_binary_tree_1test_binary_tree = {"test_binary_tree", (PyCFunction)__pyx_pw_2bp_12_binary_tree_1test_binary_tree, METH_NOARGS, 0};
static PyObject *__pyx_pw_2bp_12_binary_tree_1test_binary_tree(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("test_binary_tree (wrapper)", 0);
  __pyx_r = __pyx_pf_2bp_12_binary_tree_test_binary_tree(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_2bp_12_binary_tree_test_binary_tree(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("test_binary_tree", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("bp._binary_tree.test_binary_tree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_2bp_12_binary_tree_1test_binary_tree, NULL, __pyx_n_s_bp__binary_tree); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test_binary_tree, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_bp__binary_tree_pyx, __pyx_n_s_test_binary_tree, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 1, __pyx_L1_error)
 02:     # wikipedia example, https://en.wikipedia.org/wiki/Binary_tree#Arrays
 03: 
 04:     # root test
+05:     assert bt_is_root(0)
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!(__pyx_f_2bp_12_binary_tree_bt_is_root(0) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 5, __pyx_L1_error)
    }
  }
  #endif
+06:     assert bt_left_child(0) == 1
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_left_child(0) == 1) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 6, __pyx_L1_error)
    }
  }
  #endif
+07:     assert bt_right_child(0) == 2
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_right_child(0) == 2) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 7, __pyx_L1_error)
    }
  }
  #endif
+08:     assert bt_node_from_left(0, 0) == 0
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_node_from_left(0, 0) == 0) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 8, __pyx_L1_error)
    }
  }
  #endif
+09:     assert bt_offset_from_left(0) == 0
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_left(0) == 0) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 9, __pyx_L1_error)
    }
  }
  #endif
+10:     assert bt_offset_from_right(0) == 0
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_right(0) == 0) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 10, __pyx_L1_error)
    }
  }
  #endif
+11:     assert bt_left_leaf(0, 3) == 7
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_left_leaf(0, 3) == 7) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 11, __pyx_L1_error)
    }
  }
  #endif
+12:     assert bt_right_leaf(0, 3) == 14
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_right_leaf(0, 3) == 14) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 12, __pyx_L1_error)
    }
  }
  #endif
 13: 
 14:     # lvl 1
+15:     assert bt_is_left_child(1)
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!(__pyx_f_2bp_12_binary_tree_bt_is_left_child(1) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 15, __pyx_L1_error)
    }
  }
  #endif
+16:     assert bt_is_right_child(2)
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!(__pyx_f_2bp_12_binary_tree_bt_is_right_child(2) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 16, __pyx_L1_error)
    }
  }
  #endif
+17:     assert bt_left_child(1) == 3
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_left_child(1) == 3) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 17, __pyx_L1_error)
    }
  }
  #endif
+18:     assert bt_right_child(1) == 4
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_right_child(1) == 4) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 18, __pyx_L1_error)
    }
  }
  #endif
+19:     assert bt_left_child(2) == 5
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_left_child(2) == 5) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 19, __pyx_L1_error)
    }
  }
  #endif
+20:     assert bt_right_child(2) == 6
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_right_child(2) == 6) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 20, __pyx_L1_error)
    }
  }
  #endif
+21:     assert bt_parent(1) == 0
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_parent(1) == 0) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 21, __pyx_L1_error)
    }
  }
  #endif
+22:     assert bt_parent(2) == 0
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_parent(2) == 0) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 22, __pyx_L1_error)
    }
  }
  #endif
+23:     assert bt_right_sibling(1) == 2
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_right_sibling(1) == 2) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 23, __pyx_L1_error)
    }
  }
  #endif
+24:     assert bt_left_sibling(2) == 1
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_left_sibling(2) == 1) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 24, __pyx_L1_error)
    }
  }
  #endif
+25:     assert bt_node_from_left(0, 1) == 1
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_node_from_left(0, 1) == 1) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 25, __pyx_L1_error)
    }
  }
  #endif
+26:     assert bt_node_from_left(1, 1) == 2
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_node_from_left(1, 1) == 2) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 26, __pyx_L1_error)
    }
  }
  #endif
+27:     assert bt_offset_from_left(1) == 0
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_left(1) == 0) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 27, __pyx_L1_error)
    }
  }
  #endif
+28:     assert bt_offset_from_left(2) == 1
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_left(2) == 1) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 28, __pyx_L1_error)
    }
  }
  #endif
+29:     assert bt_offset_from_right(1) == 1
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_right(1) == 1) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 29, __pyx_L1_error)
    }
  }
  #endif
+30:     assert bt_offset_from_right(2) == 0
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_right(2) == 0) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 30, __pyx_L1_error)
    }
  }
  #endif
+31:     assert bt_left_leaf(1, 3) == 7
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_left_leaf(1, 3) == 7) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 31, __pyx_L1_error)
    }
  }
  #endif
+32:     assert bt_left_leaf(2, 3) == 11
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_left_leaf(2, 3) == 11) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 32, __pyx_L1_error)
    }
  }
  #endif
+33:     assert bt_right_leaf(1, 3) == 10
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_right_leaf(1, 3) == 10) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 33, __pyx_L1_error)
    }
  }
  #endif
+34:     assert bt_right_leaf(2, 3) == 14
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_right_leaf(2, 3) == 14) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 34, __pyx_L1_error)
    }
  }
  #endif
 35: 
 36:     # lvl 2
+37:     assert bt_is_left_child(3)
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!(__pyx_f_2bp_12_binary_tree_bt_is_left_child(3) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 37, __pyx_L1_error)
    }
  }
  #endif
+38:     assert bt_is_right_child(4)
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!(__pyx_f_2bp_12_binary_tree_bt_is_right_child(4) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 38, __pyx_L1_error)
    }
  }
  #endif
+39:     assert bt_is_left_child(5)
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!(__pyx_f_2bp_12_binary_tree_bt_is_left_child(5) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 39, __pyx_L1_error)
    }
  }
  #endif
+40:     assert bt_is_right_child(6)
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!(__pyx_f_2bp_12_binary_tree_bt_is_right_child(6) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 40, __pyx_L1_error)
    }
  }
  #endif
+41:     assert bt_parent(3) == 1
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_parent(3) == 1) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 41, __pyx_L1_error)
    }
  }
  #endif
+42:     assert bt_parent(4) == 1
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_parent(4) == 1) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 42, __pyx_L1_error)
    }
  }
  #endif
+43:     assert bt_parent(5) == 2
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_parent(5) == 2) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 43, __pyx_L1_error)
    }
  }
  #endif
+44:     assert bt_parent(6) == 2
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_parent(6) == 2) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 44, __pyx_L1_error)
    }
  }
  #endif
+45:     assert bt_right_sibling(3) == 4
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_right_sibling(3) == 4) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 45, __pyx_L1_error)
    }
  }
  #endif
+46:     assert bt_left_sibling(4) == 3
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_left_sibling(4) == 3) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 46, __pyx_L1_error)
    }
  }
  #endif
+47:     assert bt_right_sibling(5) == 6
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_right_sibling(5) == 6) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 47, __pyx_L1_error)
    }
  }
  #endif
+48:     assert bt_left_sibling(6) == 5
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_left_sibling(6) == 5) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 48, __pyx_L1_error)
    }
  }
  #endif
+49:     assert bt_node_from_left(0, 2) == 3
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_node_from_left(0, 2) == 3) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 49, __pyx_L1_error)
    }
  }
  #endif
+50:     assert bt_node_from_left(1, 2) == 4
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_node_from_left(1, 2) == 4) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 50, __pyx_L1_error)
    }
  }
  #endif
+51:     assert bt_node_from_left(2, 2) == 5
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_node_from_left(2, 2) == 5) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 51, __pyx_L1_error)
    }
  }
  #endif
+52:     assert bt_node_from_left(3, 2) == 6
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_node_from_left(3, 2) == 6) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 52, __pyx_L1_error)
    }
  }
  #endif
+53:     assert bt_offset_from_left(3) == 0
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_left(3) == 0) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 53, __pyx_L1_error)
    }
  }
  #endif
+54:     assert bt_offset_from_left(4) == 1
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_left(4) == 1) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 54, __pyx_L1_error)
    }
  }
  #endif
+55:     assert bt_offset_from_left(5) == 2
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_left(5) == 2) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 55, __pyx_L1_error)
    }
  }
  #endif
+56:     assert bt_offset_from_left(6) == 3
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_left(6) == 3) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 56, __pyx_L1_error)
    }
  }
  #endif
+57:     assert bt_offset_from_right(3) == 3
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_right(3) == 3) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 57, __pyx_L1_error)
    }
  }
  #endif
+58:     assert bt_offset_from_right(4) == 2
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_right(4) == 2) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 58, __pyx_L1_error)
    }
  }
  #endif
+59:     assert bt_offset_from_right(5) == 1
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_right(5) == 1) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 59, __pyx_L1_error)
    }
  }
  #endif
+60:     assert bt_offset_from_right(6) == 0
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_right(6) == 0) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 60, __pyx_L1_error)
    }
  }
  #endif
+61:     assert bt_left_leaf(3, 3) == 7
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_left_leaf(3, 3) == 7) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 61, __pyx_L1_error)
    }
  }
  #endif
+62:     assert bt_left_leaf(4, 3) == 9
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_left_leaf(4, 3) == 9) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 62, __pyx_L1_error)
    }
  }
  #endif
+63:     assert bt_left_leaf(5, 3) == 11
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_left_leaf(5, 3) == 11) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 63, __pyx_L1_error)
    }
  }
  #endif
+64:     assert bt_left_leaf(6, 3) == 13
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_left_leaf(6, 3) == 13) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 64, __pyx_L1_error)
    }
  }
  #endif
+65:     assert bt_right_leaf(3, 3) == 8
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_right_leaf(3, 3) == 8) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 65, __pyx_L1_error)
    }
  }
  #endif
+66:     assert bt_right_leaf(4, 3) == 10
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_right_leaf(4, 3) == 10) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 66, __pyx_L1_error)
    }
  }
  #endif
+67:     assert bt_right_leaf(5, 3) == 12
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_right_leaf(5, 3) == 12) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 67, __pyx_L1_error)
    }
  }
  #endif
+68:     assert bt_right_leaf(6, 3) == 14
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_right_leaf(6, 3) == 14) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 68, __pyx_L1_error)
    }
  }
  #endif
 69: 
 70:     # lvl 3
+71:     assert bt_offset_from_left(7) == 0
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_left(7) == 0) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 71, __pyx_L1_error)
    }
  }
  #endif
+72:     assert bt_offset_from_left(8) == 1
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_left(8) == 1) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 72, __pyx_L1_error)
    }
  }
  #endif
+73:     assert bt_offset_from_left(9) == 2
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_left(9) == 2) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 73, __pyx_L1_error)
    }
  }
  #endif
+74:     assert bt_offset_from_left(10) == 3
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_left(10) == 3) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 74, __pyx_L1_error)
    }
  }
  #endif
+75:     assert bt_offset_from_left(11) == 4
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_left(11) == 4) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 75, __pyx_L1_error)
    }
  }
  #endif
+76:     assert bt_offset_from_left(12) == 5
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_left(12) == 5) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 76, __pyx_L1_error)
    }
  }
  #endif
+77:     assert bt_offset_from_left(13) == 6
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_left(13) == 6) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 77, __pyx_L1_error)
    }
  }
  #endif
+78:     assert bt_offset_from_left(14) == 7
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_left(14) == 7) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 78, __pyx_L1_error)
    }
  }
  #endif
+79:     assert bt_offset_from_right(7) == 7
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_right(7) == 7) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 79, __pyx_L1_error)
    }
  }
  #endif
+80:     assert bt_offset_from_right(8) == 6
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_right(8) == 6) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 80, __pyx_L1_error)
    }
  }
  #endif
+81:     assert bt_offset_from_right(9) == 5
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_right(9) == 5) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 81, __pyx_L1_error)
    }
  }
  #endif
+82:     assert bt_offset_from_right(10) == 4
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_right(10) == 4) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 82, __pyx_L1_error)
    }
  }
  #endif
+83:     assert bt_offset_from_right(11) == 3
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_right(11) == 3) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 83, __pyx_L1_error)
    }
  }
  #endif
+84:     assert bt_offset_from_right(12) == 2
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_right(12) == 2) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 84, __pyx_L1_error)
    }
  }
  #endif
+85:     assert bt_offset_from_right(13) == 1
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_right(13) == 1) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 85, __pyx_L1_error)
    }
  }
  #endif
+86:     assert bt_offset_from_right(14) == 0
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_f_2bp_12_binary_tree_bt_offset_from_right(14) == 0) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 86, __pyx_L1_error)
    }
  }
  #endif
 87: