В «стандартном» случае новая ячейка поддерживается результатом malloc , и когда она становится бесполезной, вы освобождаете это
Использование массива может иметь массив BTNode и вместо malloc новую ячейку, в которую вы получаете свободную запись в массиве. Поскольку ячейки могут быть получены / освобождены априори в любом порядке, вы также можете связать свободные ячейки, поэтому, когда ячейка освобождается, она снова вводится в свободный список, связанный с массивом
Таким образом, необходимо изменить только вызовы malloc / free , чтобы использовать массив или нет
Примечание:
Typedef struct BTNode{
itemtype data;
Struct BTNode * left;
Struct BTNode * left;
}BTNode;
вы имеете в виду
typedef struct BTNode{
itemtype data;
struct BTNode * left;
struct BTNode * right;
} BTNode;