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

做抽奖网站用什么cms太原网站制作维护

做抽奖网站用什么cms,太原网站制作维护,asp汽车驾驶培训学校网站源码,wap 网站 手机前言:二叉树的实现方式多种多样,有数组实现满二叉树,有链表实现完全二叉树,今天我们就用队列来实现二叉树。 创建二叉树: 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.yayakq.cn/news/892930/

相关文章:

  • 晋城建设网站公司部门职位
  • wordpress多站点不显示网站制作致谢词
  • 唐山建站公司模板seo外链网站大全
  • 网站品牌推广设计泉州做网站的公司
  • 贵阳建站推广公司宝安新闻最新消息今天
  • 千图主站的功能介绍东莞网站建设业务的公司
  • 济南美赞网站建设公司wordpress自适应菜单
  • 空投注册送币网站怎么做四川建设网四川住建厅
  • 网站建设网络科技公司加盟狗和女人做的网站
  • 网站策划 要求企业所得税怎么算举例
  • 自己做网站步骤 域名成都网站外包公司
  • 网站建设建网站年轻的母亲网站建设介绍推广用语
  • wordpress站点标题副标题换行ios认证 东莞网站建设
  • 湖南营销型网站建设 皆来磐石网络关闭微信小程序入口
  • 做系统简单还是网站简单网站建设销售招聘
  • seo网站排名的软件德宏做网站
  • 电商类网站建设需要多少钱为什么我的网站备案通过还是显示未备案
  • 网站开发和移动开发WordPress卡密充值怎么用
  • 烟台做网站的价格建站收入
  • 企业建设好一个网站后_如何进行网站推广?免费域名注册网站哪个好
  • 卖建材的网站广州今天新闻
  • 成都企业网站seo技术响应式布局网站实例
  • 湖北省住房和城乡建设厅门户网站wordpress对接公众号源码
  • 如何做盗版小说网站安徽六安职业技术学院
  • 网站开发商品管理表字段折叠分类目录模板wordpress
  • 昌网站建设wordpress 内容页面
  • 江门网站制作方案定制网络推广培训哪里好
  • 制作网站域名需要多少钱泉州百度seo公司
  • 海外seo网站建设专业深圳网站建设公司
  • windows软件开发台州网站优化