我正在使用水平顺序遍历的概念来生成帕斯卡三角形。
这是代码片段:
void printPascalTriangle(int n)
{
int line=1,Q[50]={0},f=-1,r=-1,prev,t;
Enqueue(Q,&f,&r,1);
Enqueue(Q,&f,&r,0);
prev=0;
while(line!=n)
{
t = Dequeue(Q,&f,&r);
if( !t )
{
line++;
prev = 0;
Enqueue(Q,&f,&r,1);
if(!isEmpty(&r))
Enqueue(Q,&f,&r,0);
printf("\n");
}
else
{
printf("%d ", t);
Enqueue(Q,&f,&r,prev+t);
prev = t;
}
}
}
完整的代码在这里:
这种方法的优点是它的空间复杂度是 O(N),其中 N 是行数。
有没有更好的方法来做同样的事情?