当前位置: 首页 > news >正文

青岛科技街网站建设网站seo推广招聘

青岛科技街网站建设,网站seo推广招聘,pc网站手机版开发,wordpress主题proland目录 实现思路 代码实现 之前介绍了二叉树的前、中、后序三种遍历,采用的是递归的方式。今天我们来学习另外一种遍历方式——层序遍历。层序遍历不容小觑,虽然实现方法并不难,但是它所采取的思路是很值得学习的,与前三者不同&am…

目录

实现思路

代码实现


之前介绍了二叉树的前、中、后序三种遍历,采用的是递归的方式。今天我们来学习另外一种遍历方式——层序遍历。层序遍历不容小觑,虽然实现方法并不难,但是它所采取的思路是很值得学习的,与前三者不同,我们将采用非递归的方式实现。

层序遍历:从二叉树的根节点出发(设根节点所在为第一层),从上到下,从左到右的一次访问第一、第二、第三......层的节点。

实现思路

我们将采用一种数据结构——队列来实现层序遍历。以这样的二叉树为例:

我们知道队列有个重要的性质,只能从队尾进数据,在队头出数据

因此我们先将 1 入队。

接着让队头的元素 1 出队。在 1 出队的同时有个约定:将 1 所在节点的左、右孩子入队;

接着让队头的元素 2 出队。在 2 出队的同时,将 2 所在节点的左、右孩子入队(若为空节点则不入队);

队头元素 4 出队,左、右孩子入队;

队头元素 3 出队,左、右孩子入队;

队头元素 5 出队,左、右孩子入队;

......

最后,队列为空即表示所有节点都已访问完毕。

代码实现

因为此处用到了队列的知识,若有不明白队列的童鞋可以去看看<队列>的概念&结构&实现【C语言版】小补一下哦。

//队列的初始化
void QueueInit(Queue* pq);
//释放malloc出的内存
void QueueDestroy(Queue* pq);
//入队
void QueuePush(Queue* pq, QDataType x);
//出队
void QueuePop(Queue* pq);
//获取队头的数据
QDataType QueueFront(Queue* pq);
//判断队列是否为空
bool QueueEmpty(Queue* pq);//层序遍历
void BinaryTreeLevelOrder(BTNode* root)
{Queue q;QueueInit(&q);if (root)QueuePush(&q, root);while (!QueueEmpty(&q)){BTNode* front = QueueFront(&q);printf("%d ", front->data);QueuePop(&q);if(front->left)QueuePush(&q, front->left);if(front->right)QueuePush(&q, front->right);}printf("\n");QueueDestroy(&q);
}

http://www.ds6.com.cn/news/99116.html

相关文章:

  • 有什么做数据的网站怎么在广告联盟接广告
  • 免费下载网站模板seo服务包括哪些
  • 网站自己建设app推广接单
  • 厦门专业建站系统制作公司北京seo服务销售
  • 珠市口网站建设苹果aso优化
  • 网站建设英文方案免费观看行情软件网站进入
  • 做网站 除了域名营销类网站
  • 梅州市建设局网站小红书推广怎么收费
  • 优书网没了阜平网站seo
  • 新开传奇网站sf123怎么做网站广告
  • 纯flash网站下载关键词代发排名推广
  • 阿里云个人网站备案做淘客如何找外链资源
  • 图片站手机网站怎么做的杭州网站排名提升
  • 网站首页置顶是怎么做软文写作实训总结
  • 好用的在线设计网站宁波seo关键词培训
  • vue做网站cms申京效率值联盟第一
  • 网站集约化建设汇报浙江seo外包
  • 上传视频网站开发重庆优化seo
  • 会员插件wordpressseo优化快排
  • 排名网站却搜不到今日热搜
  • 网站如何做即时聊天平面设计正规培训机构
  • 电子商务网站建设需求表网络营销的特点不包括
  • 网站建设电话营销网站维护工程师
  • 买模板做网站实训百度搜索引擎的总结
  • .net做网站安全吗公司网站设计需要多少钱
  • 网站建设预期周期网站设计公司官网
  • 如何做网站的埋点关键词搜索排名
  • 一个小型购物网站开发微博指数
  • 南宁网站建设建站系统北京建站公司
  • 罗湖做网站的公司哪家好线下推广方案