分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

#include <iostream>#define _OK 1#define _ERROR 0using namespace std;// Define node element type in binary tree.typedef char Element;// Binary tree.typedef struct BTNode{ Element data; BTNode *lChild,*rChild; // Define left,right subtree.} BTNode, *BTree;// Define node element type in queue. (The node element type in queue is the pointer to binary tree node)typedef BTNode *QElementType;typedef int status;// --------------------------------------------------------------------// We need use queue to perform level traverse. So, define queue first.typedef struct QNode{ QElementType data; QNode *next;} QNode, *QueuePtr;// Definition of queue.typedef struct{ QueuePtr front; QueuePtr rear;} LinkQueue;status InitQueue(LinkQueue &Q){ Q.front = NULL; Q.rear = NULL; return _OK;}bool IsEmpty(LinkQueue Q){ return Q.front == NULL;}status EnQueue(LinkQueue &Q, QElementType e){ // Construct queue node. QNode *ptrNode = (QNode*) malloc(sizeof(QNode)); if(!ptrNode) {  return _ERROR; } ptrNode->data=e; ptrNode->next=NULL; if(IsEmpty(Q)) {  Q.front=Q.rear=ptrNode;  return _OK; } Q.rear->next=ptrNode; Q.rear = ptrNode; return _OK;}status DeQueue(LinkQueue &Q, QElementType &e){ if(IsEmpty(Q)) {  return _ERROR; } QNode *tempPtr = Q.front; e = tempPtr->data; Q.front = tempPtr->next; free(tempPtr); return _OK;}// ------------------------------------------int CreateBTree(BTree &T){ char ch; cout << "Please input a character:" << endl; cin >> ch; if(ch=='#') {  T = NULL; } else {  // Allocate memory for new node.  if(!(T = (BTNode*)malloc(sizeof(BTNode))))  {   return 0; // Allocation fails.  }  T->data = ch;  // Create left subtree.  CreateBTree(T->lChild);  // Create right subtree.  CreateBTree(T->rChild); } return 1;}void VisitBTNode(BTNode *BT){ cout << BT->data << endl;}void VisitQNode(QNode *Q){ VisitBTNode(Q->data);}void LevelTraverse(BTree T){ QElementType e; LinkQueue Q; InitQueue(Q); EnQueue(Q,T); while (!IsEmpty(Q)) {  VisitQNode(Q.front);  if(Q.front->data->lChild!=NULL)  {   EnQueue(Q,Q.front->data->lChild);  }  if(Q.front->data->rChild!=NULL)  {   EnQueue(Q,Q.front->data->rChild);  }  DeQueue(Q,e); }}// ------------------------------------------void main(){ BTree T; CreateBTree(T); LevelTraverse(T);}// Output:/*Please input a character:6Please input a character:gPlease input a character:#Please input a character:7Please input a character:fPlease input a character:gPlease input a character:8Please input a character:9Please input a character:#Please input a character:$Please input a character:#Please input a character:#Please input a character:#Please input a character:#Please input a character:cPlease input a character:#Please input a character:#Please input a character:#Please input a character:#6g7fgc89$*/

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

数据结构 - 二叉树的广度优先遍历算法(C++)相关推荐

  1. 数据结构——二叉树的递归遍历算法与非递归遍历算法+层次遍历算法

    (文章篇幅有点长,二叉树的递归遍历算法不作详细分析,但是二叉树的非递归遍历算法和层次遍历算法都有非常详细的分析过程,记得往下翻哦!) 二叉树的递归遍历算法实现 我们首先用递归的方法先序遍历创建这样一棵 ...

  2. 数据结构——二叉树的层次遍历进阶

    之前的一个博客 数据结构--二叉树的层次遍历看完这个,可以简单实现下面的问题 问题: 1.计算二叉树的最大宽度(二叉树的最大宽度是指二叉树所有层中结点个数的最大值. 2.用按层次顺序遍历二叉树的方法, ...

  3. 二叉树的层序遍历算法 + 打印二叉树所有最左边的元素(算法)

    二叉树的层序遍历算法 + 打印二叉树所有最左边的元素(算法) 层序遍历 /** * 树结构定义 */ private static class BinaryNode<T> {BinaryN ...

  4. 广度优先遍历算法-01寻找制高点问题

    寻找制高点 前言 广度优先遍历算法在搜索答案时不像深度优先那样一条路走到底,而是采用由近及远的方式,先访问离起始点最近的所有点,再访问远一些的点.由于这种一层层搜索的策略,又叫做层次遍历算法. 简介 ...

  5. 二叉树创建及遍历算法(递归及非递归)(转)

    //二叉树处理头文件 //包括二叉树的结构定义,二叉树的创建,遍历算法(递归及非递归), /* 作者:成晓旭 时间:2001年10月7日(18:49:38-20:00:00) 内容:完成二叉树创建,二 ...

  6. 二叉树:层次遍历算法(自下而上,从右到左)

    和上一个算法:二叉树:层次遍历算法(自上而下,从左到右)类似,是在上一个的基础上完成的,上一个是自上而下,从左到右,是默认的层次遍历算法. 而与之相反的,本题是自下而上,从右到左的层次遍历,需要借助队 ...

  7. python、java实现二叉树,细说二叉树添加节点、深度优先(先序、中序、后续)遍历 、广度优先 遍历算法...

    数据结构可以说是编程的内功心法,掌握好数据结构真的非常重要.目前基本上流行的数据结构都是c和c++版本的,我最近在学习python,尝试着用python实现了二叉树的基本操作.写下一篇博文,总结一下, ...

  8. 数据结构(二十)二叉树的递归遍历算法

    一.二叉树的遍历的定义 1.二叉树的遍历(traversing binary tree)是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问依次且仅被访问依次.树的结点之间不存在 ...

  9. 数据结构 第七章 实验题2 实现二叉树的各种遍历算法

    实验题目:     实现二叉树各种遍历算法 实验目的:      领会二叉树的各种遍历过程以及遍历算法设计 实验内容:       设计程序,实现二叉树的先序遍历.中序遍历和后序遍历的       递 ...

最新文章

  1. win10 error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突
  2. js跟随鼠标移动的写法
  3. 计算机专业文档写作课件,计算机专业论文写作的方法.ppt
  4. 2018届应届生android面试总结
  5. 10位IT领袖给应届毕业生的10条忠告
  6. windows下memcache的安装总结
  7. Java类集框架 —— LinkedHashMap源码分析
  8. JAVA中的MDC类_CMake - 用/ MT而不是/ MD编译
  9. php字符串转openssl格式,将OpenSSL生成的RSA公钥转换为OpenSSH格式(PHP)
  10. ENVI5.3sp1下载链接以及安装全过程
  11. Android——启动本地QQ,实现与指定的QQ号临时会话
  12. poi实现多个excel合并成一个excel
  13. matlab矩阵特征值分解,矩阵特征值分解与奇异值分解含义解析及应用
  14. Boost库系列:asio总结
  15. vs2017错误:当前页面的脚本发生错误
  16. 不同证书格式Der 、Cer 、Pfx 、Pem区别
  17. 计算机表格合并居中,表格合并居中快捷键
  18. mysql spider引擎安装_【转】MySQL之Spider存储引擎原理详解
  19. C++ 读取wav文件中的PCM数据
  20. 分段模糊隶属度的自定义python函数(线性插值原理)

热门文章

  1. 一位软件工程师的6年总结(转载)
  2. plsql developer 10注册码----亲测截止2017年5月6可用
  3. 读书笔记 effective c++ Item 50 了解何时替换new和delete 是有意义的
  4. [Java] Web开发环境搭建 - MyEclipse 篇
  5. 切割 Tomcat 的 catalina.out 文件,解决日志文件过大的问题
  6. mysql从某表中查询数据插入到另一表的处理
  7. C# Winform编程ListBox之添加图标
  8. MyEclipse8.5/8.6不能安装ADT
  9. python 遍历文件 获取文件修改时间
  10. python时间差中 seconds 和 total_seconds 区别