#c #pointers #data-structures #tree
Вопрос:
Я пытаюсь написать код для поперечной структуры данных дерева, используя поперечный порядок, и сохранить каждый узел в массиве.
Я придумал этот код ниже, чтобы достичь этого, пожалуйста, исправьте меня, если код неправильный. Даже если это правильно, должны быть лучшие способы сделать это, чем использование «статического», из-за которого «индекс» остается в памяти до завершения программы.
void *inorderTransversal(AVLTreeNode *node, int treeSize)
{
static int index = 0;
AVLTreeNode *nodesArray[treeSize-1];
if (node == NULL)
return;
inorderTransversal(node->left, treeSize);
nodesArray[index] = node;
index ;
inorderTransversal(node->right, treeSize);
}
Ответ №1:
Вы можете объявить массив на основе размера дерева и сохранить его.
int[treeSize] array = new int[treeSize];
int index = 0;
void *inorderTransversal(AVLTreeNode *node) {
if (node == null)
return;
inorderTransversal(node->left);
array[index ] = node.value;
inorderTransversal(node->right);
}
Комментарии:
1. Есть ли способ включить индекс в саму функцию?
2. @BobbyLi, нет, зачем вам это нужно внутри функции?
3. Потому что я хочу, чтобы индекс был локальным значением.