0
点赞
收藏
分享

微信扫一扫

数据结构每日学习 Day6二叉树-- 树的层次遍历

一脸伟人痣 2022-01-09 阅读 49

树的层次遍历

树的层次遍历:
从上到下,从左至右。

现改为:自下而上、自右向左的层次遍历:

思路:
在原来层次遍历的基础上,借助于栈,在每一个节点出队,并将其左右节点入队后,将该节点入栈。等所有元素全部出队入栈后,再依次访问栈中元素。

前提:采用二叉链表存储结构

void LevelOrder2(BiTree T){
    InitQueue(Q); InitStack(S);
    BiTree p=T;
    //队头入队
    EnQueue(Q,p);
    while( p || !IsEmpty(Q)){
        DeQueue(Q,p);//出队
        Push(S,p);  //入栈
        
        if(p->lchild){
            EnQueue(Q,p->lchild);
        }
        if(p->rchild){
            EnQueue(Q,p->rchild);
        }
        //最后遍历栈中元素
    while(!IsEmpty(S)){
    	Pop(S,p);visit(p);
    }
  }
举报

相关推荐

0 条评论