zoukankan      html  css  js  c++  java
  • 二叉树的层次遍历

    层次遍历用队列实现:

    方法一:

    int visit(BiTree T)  
    {  
        if(T)  
        {  
            printf("%c ",T->data);  
            return 1;  
        }  
        else  
            return 0;  
    }  
      
    void LeverTraverse(BiTree T)   //方法一、非递归层次遍历二叉树   
    {  
        queue <BiTree> Q;  
        BiTree p;  
        p = T;  
        if(visit(p)==1)  
            Q.push(p);  
        while(!Q.empty())  
        {  
            p = Q.front();  
            Q.pop();  
            if(visit(p->lchild) == 1)   
                Q.push(p->lchild);  
            if(visit(p->rchild) == 1)  
                Q.push(p->rchild);  
        }  
    }  

    方法二:

    void LevelOrder(BiTree BT)     //方法二、非递归层次遍历二叉树   
    {  
        BiTNode *queue[10];//定义队列有十个空间  
        if (BT==NULL)  
            return;  
        int front,rear;  
        front=rear=0;  
        queue[rear++]=BT;  
        while(front!=rear)//如果队尾指针不等于对头指针时  
        {  
            cout<<queue[front]->data<<"  ";  //输出遍历结果  
            if(queue[front]->lchild!=NULL)  //将队首结点的左孩子指针入队列  
            {  
                queue[rear]=queue[front]->lchild;  
                rear++;    //队尾指针后移一位  
            }  
            if(queue[front]->rchild!=NULL)  
            {  
                queue[rear]=queue[front]->rchild;    //将队首结点的右孩子指针入队列  
                rear++;   //队尾指针后移一位  
            }  
            front++;    //对头指针后移一位  
        }  
    }  
  • 相关阅读:
    Java面向对象编程之异常处理机制
    LinkedList链式集合
    Java之反射机制
    适配器模式
    QuickHit
    Java之单例模式
    Java面向对象之接口
    多线程
    线程同步
    试题分析
  • 原文地址:https://www.cnblogs.com/sooner/p/3010698.html
Copyright © 2011-2022 走看看