题目描述:试给出二叉树的自下而上、从右到左的层次遍历算法。
分析: 正常的层次遍历是从上到下,从左往右,所以可以考虑用层次遍历,在每次出队的时候进栈,最后将栈挨个输出即可得到。
void InvertLevel(BiTree T){
InitQueue(Q);
InitStack(S);
BiTNode *p;
EnQueue(T);
while(p || !IsEmpty(Q)){
DeQueue(Q,p);
push(S,p);
if(p->lchild)
EnQueue(p->lchild);
if(p->rchild)
EnQueue(p->rchild);
}
while(!IsEmpty(S)){
pop(S,p);
printf(p->data);
}
}