Я пытаюсь пройти двоичное дерево, построенное с помощью входных данных с клавиатуры. Данные вставляется в двоичное дерево успешно. У меня есть оператор switch, где «случай 4» должен пересекать (и печатать) уровень двоичного дерева по уровню. Однако я получил ошибку EXC_BAD_ACCESS. Я был бы более чем счастлив, если бы кто-то помог мне с этим.Прохождение и печать двоичного дерева по уровню
(RootPtr - это верхний -уровень 0-узла бинарного дерева, определяемый глобально; TreeDepth() - это функция, вычисляющая «глубина» дерева, где глубина, определенная глобально, и корневой узел имеет глубину 0, а GetNode в основном функция инициализации (с использованием malloc) для указателей типа TreePtr.)
Спасибо вам все заранее.
Вот соответствующий код:
Это определение структуры;
typedef struct treeItem
{
int data;
struct treeItem *left;
struct treeItem *right;
}Tree , *TreePtr;
Это случай переключателя, в котором я вызываю функцию (-ы) пересечения по уровню;
case 4:
TreePtr temp;
GetNode(&temp);
temp = RootPtr;
printLevelOrder(temp);
printf("\n\n");
break;
Это функции, используемые для перемещения уровня дерева по уровню;
void printGivenLevel(TreePtr TemPtr, int level)
{
if (items == 0)
return;
else
{ if(level == 0)
{
printf(" %d", (*TemPtr).data); //the line I got ERROR
}
else
{
printGivenLevel((*TemPtr).left, (level-1));
printGivenLevel((*TemPtr).right, (level-1));
}
}
}
void printLevelOrder(TreePtr TemPtr)
{
TreeDepth();
if (items == 0)
printf("\nTree is empty.\n");
else
{
printf("Traverse level by level:");
for (int i=0; i<=Depth; i++)
{
printGivenLevel(TemPtr, i);
}
}
}
Супер занят, поэтому не может вникать, но не будет ли здесь первой поисковой работы? –
@ kiss-o-matic Честно говоря, я новичок, поэтому в первый момент я не мог представить «широкий поиск первого» в моем сознании. Но я буду исследовать его. Спасибо. –
@BasakOguz https://en.wikipedia.org/wiki/Breadth-first_search – JSQuareD