@@ -25,45 +25,45 @@ static void ArrayForTrees_dealloc(ArrayForTrees *self) {
25
25
}
26
26
27
27
static PyObject* ArrayForTrees__modify (ArrayForTrees *self) {
28
- // if(((double)self->_num/(double)self->_size) < self->_load_factor){
29
- // map<long , long> new_indices;
28
+ if (((double )self->_num /(double )self->_size ) < self->_load_factor ){
29
+ map<long , long > new_indices;
30
30
31
- // // PyObject* arr_new = OneDimensionalArray___new__(&TreeNodeType, reinterpret_cast<PyObject*>(2*self->_num + 1));
32
- // // This is how arr_new was made in DynamicOneDimensionalArray__modify() for the previous line :-
33
- // long new_size = 2 * self->_num + 1;
34
- // PyObject** arr_new = reinterpret_cast<PyObject**>(std::malloc(new_size * sizeof(PyObject*)));
35
- // for( int i = 0; i < new_size; i++ ) {
36
- // Py_INCREF(Py_None);
37
- // arr_new[i] = Py_None;
38
- // }
31
+ // PyObject* arr_new = OneDimensionalArray___new__(&TreeNodeType, reinterpret_cast<PyObject*>(2*self->_num + 1));
32
+ // This is how arr_new was made in DynamicOneDimensionalArray__modify() for the previous line :-
33
+ long new_size = 2 * self->_num + 1 ;
34
+ PyObject** arr_new = reinterpret_cast <PyObject**>(std::malloc (new_size * sizeof (PyObject*)));
35
+ for ( int i = 0 ; i < new_size; i++ ) {
36
+ Py_INCREF (Py_None);
37
+ arr_new[i] = Py_None;
38
+ }
39
39
40
- // int j=0;
41
- // PyObject** _data = self->_one_dimensional_array->_data;
42
- // for(int i=0; i<=self->_last_pos_filled;i++){
43
- // if(_data[i] != Py_None){ // Check this line. Python code: if self[i] is not None:
44
- // Py_INCREF(Py_None); // This was put in DynamicOneDimensionalArray line 116
45
- // arr_new[j] = _data[i];
46
- // new_indices[_data[i]->key] = j;
47
- // j += 1;
48
- // }
49
- // }
50
- // for(int i=0;i<j;i++){
51
- // if(arr_new[i]->left != Py_None){
52
- // arr_new[i]->left = new_indices[_data[arr_new[i]->left]->key];
53
- // }
54
- // if(arr_new[i]->right != Py_None){
55
- // arr_new[i]->right = new_indices[_data[arr_new[i]->right]->key];
56
- // }
57
- // if(arr_new[i]->parent != Py_None){
58
- // arr_new[i]->parent = new_indices[_data[arr_new[i]->parent]->key];
59
- // }
60
- // }
61
- // self->_last_pos_filled = j - 1;
62
- // self->_one_dimensional_array->_data = arr_new;
63
- // self->_one_dimensional_array->_size = new_size;
64
- // self->_size = new_size;
65
- // return reinterpret_cast<PyObject*>(new_indices);
66
- // }
40
+ int j=0 ;
41
+ PyObject** _data = self->_one_dimensional_array ->_data ;
42
+ for (int i=0 ; i<=self->_last_pos_filled ;i++){
43
+ if (_data[i] != Py_None){ // Check this line. Python code: if self[i] is not None:
44
+ Py_INCREF (Py_None); // This was put in DynamicOneDimensionalArray line 116
45
+ arr_new[j] = _data[i];
46
+ new_indices[_data[i]->key ] = j;
47
+ j += 1 ;
48
+ }
49
+ }
50
+ for (int i=0 ;i<j;i++){
51
+ if (arr_new[i]->left != Py_None){
52
+ arr_new[i]->left = new_indices[_data[arr_new[i]->left ]->key ];
53
+ }
54
+ if (arr_new[i]->right != Py_None){
55
+ arr_new[i]->right = new_indices[_data[arr_new[i]->right ]->key ];
56
+ }
57
+ if (arr_new[i]->parent != Py_None){
58
+ arr_new[i]->parent = new_indices[_data[arr_new[i]->parent ]->key ];
59
+ }
60
+ }
61
+ self->_last_pos_filled = j - 1 ;
62
+ self->_one_dimensional_array ->_data = arr_new;
63
+ self->_one_dimensional_array ->_size = new_size;
64
+ self->_size = new_size;
65
+ return reinterpret_cast <PyObject*>(new_indices);
66
+ }
67
67
Py_INCREF (Py_None);
68
68
return Py_None;
69
69
}
0 commit comments