Добрый день! Есть задача - отсортировать массив с помощью дерева. Не могу сообразить, как средствами VBA Excel построить это самое дерево. Есть (нашла на просторах сети) код на Си, основанный на структуре с указателями, и вся процедура легка и понятна. А вот как подобное организовать в VBA?
| Код | typedef struct tree { int a; // данные struct tree *left; // левый сын struct tree *right; // правый сын } TREE;
TREE *add_to_tree(TREE *root, int new_value) { if (root==NULL) // если нет сыновей - создаем новый элемент { root = (TREE*)malloc(sizeof(TREE)); root->a = new_value; root->left = root->right = 0; return root; } if (root->a < new_value) // добавлем ветвь root->right = add_to_tree(root->right, new_value); else root->left = add_to_tree(root->left, new_value); return root; }
void tree_to_array(TREE *root, int a[]) // процедура заполнения массива { static max2=0; // счетчик элементов нового массива if (root==NULL) return; // условие окончания - нет сыновей tree_to_array(root->left, a); // обход левого поддерева a[max2++] = root->a; tree_to_array(root->right, a); // обход правого поддерева free(root); }
|
|