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

门户网站解决方案谷歌浏览器下载手机版最新版

门户网站解决方案,谷歌浏览器下载手机版最新版,什么源码做有趣的网站,wordpress 区块链模板前言:二叉树的实现方式多种多样,有数组实现满二叉树,有链表实现完全二叉树,今天我们就用队列来实现二叉树。 创建二叉树: typedef int BTDataType; typedef struct BinaryTreeNode {BTDataType data;struct BinaryTre…

前言:二叉树的实现方式多种多样,有数组实现满二叉树,有链表实现完全二叉树,今天我们就用队列来实现二叉树。

在这里插入图片描述

创建二叉树:

typedef int BTDataType;
typedef struct BinaryTreeNode
{BTDataType data;struct BinaryTreeNode* left;struct BinaryTreeNode* right;
}TreeNode;

层序遍历:

void LevelOrder(TreeNode* root)
{Queue q;QueueInit(&q);if (root)QueuePush(&q, root);int levelSize = 1;while (!QueueEmpty(&q)){// 一层一层出while (levelSize--){TreeNode* front = QueueFront(&q);QueuePop(&q);printf("%d ", front->data);if (front->left)QueuePush(&q, front->left);if (front->right)QueuePush(&q, front->right);}printf("\n");levelSize = QueueSize(&q);}printf("\n");QueueDestroy(&q);
}

我们的队列是用来存放二叉树节点的,所以我们的目的是将节点一层一层的遍历出来,所以我们的第一层是根节点,我们把它放入队列,出队列的时候就要带它的左子树和右子树节点进入队列,那么我们怎么知道每层的节点数呢?我们定义一个levelSize,初始值为1。
在这里插入图片描述
我们的levelSize是每层的节点个数,我们的节点个数因为在队列中,所以我们的个数就等于队列的数据个数,即levelSize = QueueSize(&q),我们通过循环让节点一层一层的出队列打印出来就达到了我们的目的。整个过程如下图所示:
在这里插入图片描述

判断二叉树是否是完全二叉树:

bool TreeComplete(TreeNode* root)
{Queue q;QueueInit(&q);if (root)QueuePush(&q, root);int levelSize = 1;while (!QueueEmpty(&q)){TreeNode* front = QueueFront(&q);QueuePop(&q);if (front == NULL)break;QueuePush(&q, front->left);QueuePush(&q, front->right);}// 前面遇到空以后,后面还有非空就不是完全二叉树while (!QueueEmpty(&q)){TreeNode* front = QueueFront(&q);QueuePop(&q);if (front){QueueDestroy(&q);return false;}}QueueDestroy(&q);return true;
}

我们这里同样按照节点的顺序给它入队列和出队列,我们的levelSize控制每一层的数据,我们的根节点出队列就将它的左子树和右子树带入队列,如果中间有一个子树为空那么就退出循环,但是我们后面如果还有不为空的节点,也就是不连续的话,那么就不是完全二叉树。
在这里插入图片描述
我们拿到2的左子树3后,出队列,再拿2的右子树,2的右子树为空所以就结束循环,我们在到队列里面取队列首元素,再出队列,队列的元素不为空,说明二叉树不连续,所以该树就不是,完全二叉树,反之就是完全二叉树。

如果对大家有帮助的话就支持一下吧!感谢大家的支持!

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

相关文章:

  • 商务网站建设难不难seo百度网站排名软件
  • 网站建设综合实践 教材武汉做网络推广的公司
  • 电商网站运营流程关键词挖掘查询工具
  • 本地建站工具华为手机软文范文300
  • 做网站文字字号大小如何在百度发布广告
  • 哪个网站可以做付费推广磁力搜索引擎不死鸟
  • 2021年十大购物网站排名网站是怎么做出来的
  • 国外网站建设软件排行榜产品网络推广怎样做
  • 网站建设行业企业推广的渠道有哪些
  • thinkphp3.2 企业网站源码阿里巴巴友情链接怎么设置
  • 用网站空间可以做有后台的网站吗市场调研流程
  • 义乌网站制作电话网店运营
  • wordpress 企业小程序seo分析报告
  • 上海高中生做课题的网站公司关键词seo
  • 微信上的网站怎么做海外社交媒体营销
  • 找外包网站 和自己做干净无广告的搜索引擎
  • asp课程设计企业网站设计市场监督管理局官网
  • 赌博游戏网站怎么自己做手机推广app
  • 制作网站的网站网站推广如何收费
  • 想开个网站怎么做域名查询seo
  • 网站建设策略seo国外推广软件
  • 企业邮箱在哪里申请网站搜索优化价格
  • 襄阳作风建设年网站seo排名点击器曝光行者seo
  • 什么网站可以做邮件列表如何免费创建自己的网站平台
  • 武汉做网站选华企加速器怎么做公司网站推广
  • 生活门户网站开发方案抖音广告投放代理商
  • 新乡建设工程信息网站山东济南最新事件
  • 建手机网站报价专业的推广公司
  • 免费网站安全软件seo网络推广到底是做什么的
  • 江门外贸网站推广方案免费正规的接单平台