Я должен печатать узлы двоичного дерева, используя обход уровня, но в спиральной форме. I.e узлы на разных уровнях должны быть напечатаны в виде спирали.обход порядка уровня на уровне двоичного дерева по методу зигзага
для например: Если дерево выглядит следующим образом:
Выход должен быть 10 5 20 25 15 6 4.
алгоритм я использовал простой и лишь небольшая вариация обхода уровня порядка. Я просто взял переменную p.if, если переменная равна 1, чем печатать заказ на заданном уровне слева направо, если он -1 печатает справа налево.
void getlevel(struct node *root,int n,int p)
{
if(root==NULL)
return;
if(n==0)
{
printf("%d ",root->info);
return;
}
if(n>0)
{
if(p==1)
{
getlevel(root->left,n-1,p);
getlevel(root->right,n-1,p);
}
if(p==-1)
{
getlevel(root->right,n-1,p);
getlevel(root->left,n-1,p);
}
}
}
Я получаю ответ, но худший случай сложности, вероятно, O (N^2) в случае наклонного дерева.
Может ли быть лучше алгоритм для решения этой задачи? ..
Моя вся программа here
Ну что мы можем сделать лучше, проверить это здесь http://techieme.in/spiral-traversal/. Существует несколько способов решения этой проблемы. – dharam