思想:逆层次遍历二叉树。先层次遍历输出二叉树,然后将其输出的元素入栈,最后输出栈内的元素。
代码:
void InverseBinaryTree(BiTree T){
SqStack stack;
SqQueue queue;
BiTNode *p;//辅助指针
if(T!=NULL){
initStack(stack);
initSqQueue(queue);
enQueue(queue,T);//根入队
while(!queueEmpty(queue)) {
deQueue(queue,p);//出队
push(stack,p);//入栈
if(p->lchild) enQueue(queue,p->lchild);
if(p->rchild) enQueue(queue,p->rchild);
}
while(!stackWEmpty(stack)){
pop(stack,p);
printf("%d", p->data);
}
}
}
时间复杂度O(n);空间复杂度O(1)