将原本自上而下,从左到右的层次遍历更改为自下而上从右到左的层次遍历
typedef struct BiTNode{
ElemType data;
BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void LevelOrder_2(BiTree T){
InitQueue(Q);
InitStack(S);//初始化栈
EnQueue(Q);
BiTNode *p;
while(!IsEmpty(Q)){
DeQueue(Q);
push(S,p);//转为入栈
if(p->lchild!=NULL)
EnQueue(Q,p->lchild);
if(p->rchild!=NULL)
EnQueue(Q,p->rchild);
}
while(!IsEmpty(S)){//依次出栈
pop(S,p);
visit(p->data);
}
}