У вас нет кода для печати новой строки ('\ n') после каждого поколения дерева.
Вам нужно найти способ сообщить программе, когда проходит поколение дерева, а затемвставьте туда «\ n».
Возможно:
void print_g(Tree t)
{
Queue q=initQueue();
Tree tmp=initTree();
if(!isTreeEmpty(t))
enqueue(q,t);
int dist = distanceFromTop(t); // new function to tell us which generation we are in
while(!isQueueEmpty(q))
{
tmp=dequeue(q);
if (distanceFromTop(tmp) != dist) // have we changed generation from previous iteration?
printf("\n"); // if so, newline
dist = distanceFromTop(tmp);
printf("%d ",*((int *)Root(tmp)));
if(!isTreeEmpty(subLeft(tmp)))
enqueue(q,subLeft(tmp));
if(!isTreeEmpty(subRight(tmp)))
enqueue(q,subRight(tmp));
}
}
Просто убедитесь, что в вашем определении Tree
есть член для хранения своего собственного distanceFromTop и заполните это значение во время initTree()
, чтобы алгоритм не стал слишком медленным.