zoukankan      html  css  js  c++  java
  • 毕业了-二叉树层次遍历算法-借助循环队列这个数据结构来实现,悟:数据结构是用来实现算法的

    //代码进过测试,直接可以拿来用
    //关键就是那一点未透——队列。
    // 关键就是一个出队,一个入队操作。
    #include<iostream> #include<stdio.h> #include<stack> #include<queue> #include<malloc.h> # define MaxSize 100 using namespace std; //二叉树结点 typedef struct BTNode{ char data; struct BTNode *lchild; struct BTNode *rchild; }BTNode; //先序建立二叉树,大话p187,教科书吧版 BTNode *CreateBiTree()//只需要一个函数 { char ch; BTNode *T; scanf("%c",&ch); if(ch=='#') T=NULL; else { T = (BTNode *)malloc(sizeof(BTNode)); T->data = ch; T->lchild = CreateBiTree(); T->rchild = CreateBiTree(); } return T;//返回根节点 } //底层借助了qu[MaxSize]这个循环数组实现了算法 void LevelOrder(BTNode *T) { BTNode *p; //定义工作指针p BTNode *qu[MaxSize]; //定义环形队列,存放节点指针 int front,rear; //定义队头和队尾指针 front=rear=-1; //置队列为空队列 rear++; qu[rear]=T; //根节点指针进入队列 while (front!=rear) //队列不为空 { front=(front+1)%MaxSize; p=qu[front]; //队头出队列 printf("%c ",p->data); //访问节点 if (p->lchild!=NULL) //有左孩子时将其进队 { rear=(rear+1)%MaxSize; qu[rear]=p->lchild; } if (p->rchild!=NULL) //有右孩子时将其进队 { rear=(rear+1)%MaxSize; qu[rear]=p->rchild; } } } int main() { BTNode *T; T = CreateBiTree();//建立 LevelOrder(T); return 0; }
  • 相关阅读:
    The Best Seat in ACM Contest
    确定比赛名次
    Red and Black
    Can you find it?
    胜利大逃亡
    Reward
    DXUT编译指南(转)
    逐顶点和逐像素光照
    转战DX
    hlsl之ambient
  • 原文地址:https://www.cnblogs.com/cs-lcy/p/7071460.html
Copyright © 2011-2022 走看看