当前位置: 首页 > news >正文 杭州 高端网站定制asp做网站技术怎样 news 2025/11/4 7:08:35 杭州 高端网站定制,asp做网站技术怎样,wordpress同步qq微博,dw个人网页制作素材目录 链式二叉树示意图编辑 何为层序遍历 手搓一个链式二叉树 实现层序遍历链式二叉树 链式二叉树示意图 何为层序遍历 和前中后序遍历不同#xff0c;前中后序遍历链式二叉树需要利用递归才能遍历 而层序遍历是非递归的形式#xff0c;如上图#xff1a;层序遍历的…目录 链式二叉树示意图编辑 何为层序遍历 手搓一个链式二叉树 实现层序遍历链式二叉树 链式二叉树示意图 何为层序遍历 和前中后序遍历不同前中后序遍历链式二叉树需要利用递归才能遍历 而层序遍历是非递归的形式如上图层序遍历的结果124356 手搓一个链式二叉树 代码演示以上图为例 // 数据类型 typedef int BTDataType;// 二叉树节点的结构 typedef struct BinaryTreeNode {BTDataType data; //每个节点的数据struct BinaryTreeNode* left; //指向左子树的指针struct BinaryTreeNode* right; //指向右子树的指针 }BTNode;// 申请新节点 BTNode* BuyNode(BTDataType x) {BTNode* newnode (BTNode*)malloc(sizeof(BTNode));// 判断是否申请成功if (newnode NULL){perror(malloc fail);return NULL;}// 初始化newnode-data x;newnode-left NULL;newnode-right NULL;return newnode; }BTNode* CreatBinaryTree() {BTNode* n1 BuyNode(1);assert(n1);BTNode* n2 BuyNode(2);assert(n2);BTNode* n3 BuyNode(3);assert(n3);BTNode* n4 BuyNode(4);assert(n4);BTNode* n5 BuyNode(5);assert(n5);BTNode* n6 BuyNode(6);assert(n6);n1-left n2;n1-right n4;n2-left n3;n4-left n5;n4-right n6;return n1; } 实现层序遍历链式二叉树 实现思路 利用队列的先进先出的性质实现层序遍历链式二叉树 如上图所示先将 1 节点入队列再将 1 节点出队列在 1 节点出队列的时候把 2、4 节点带入队列2 节点再出队列2 节点出队列的时候把 3 节点带入队列然后就是 4 节点出队列同样出队列的时候将 5、6 节点带入队列最后再依次出队列所有数据出完队列后根据出队列的顺序就是层序遍历的顺序 实现前要先构建一个简易队列以及队列的基本函数 // 数据类型 typedef BTNode* QDataType;// 链式队列每个节点的结构 typedef struct QueueNode {struct QueueNode* next; //指向下一个节点的指针QDataType data; //当前节点的数据 }QNode;// 链式队列的结构 typedef struct Queue {QNode* phead; //指向队头节点的指针QNode* ptail; //指向队尾节点的指针int size; //队列的总数据个数 }Queue;// 初始化队列 void QueueInit(Queue* pq) {assert(pq);pq-phead NULL;pq-ptail NULL;pq-size 0; }// 数据入队列 void QueuePush(Queue* pq, QDataType x) {assert(pq);// 申请新节点QNode* newnode (QNode*)malloc(sizeof(QNode));// 判断是否申请成功if (newnode NULL){perror(malloc fail);return;}// 初始化新节点newnode-data x;newnode-next NULL;if (pq-phead NULL) //当队列中没有数据的情况{// 双重判断更加保险assert(pq-ptail NULL);// 头尾都指向新节点即可pq-phead newnode;pq-ptail newnode;}else //当队列已有数据的情况{pq-ptail-next newnode;pq-ptail newnode;}pq-size; }// 数据出队列 void QueuePop(Queue* pq) {assert(pq);// 当队列中没有数据的情况if (pq-phead NULL){perror(pq-phead);return;}if (pq-phead-next NULL) //当队列中只有一个数据的情况{free(pq-phead);pq-phead NULL;pq-ptail NULL;}else //当队列中有多个数据的情况{QNode* next pq-phead-next;free(pq-phead);pq-phead next;}pq-size--; }// 访问队头数据 QDataType QueueFront(Queue* pq) {assert(pq);// 当队列中没有数据的情况if (pq-phead NULL){perror(pq-phead);return -1;}return pq-phead-data; }// 判断队列是否为空 bool QueueEmpty(Queue* pq) {assert(pq);return (pq-phead NULL) (pq-ptail NULL); }// 释放队列 void QueueDestroy(Queue* pq) {assert(pq);QNode* cur pq-phead;while (cur ! NULL){QNode* next cur-next;free(cur);cur next;}pq-phead NULL;pq-ptail NULL;pq-size 0; } 在定义队列数据时需要定义链式二叉树节点的指针这样才能找到二叉树节点的左右子树 代码实现 void LevelOrder(BTNode* root) {// 定义队列Queue q;// 初始化队列QueueInit(q);// 先将二叉树的根节点的指针入队列if (root ! NULL)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); } 代码解析 当队列为空时链式二叉树的层序遍历就实现了 但最开始队列没有数据所以要先将指向根节点的指针存放入队列 且存放节点指针是为了方便查找左右子树 然后在利用 while 循环只要队列不为空就循环下去 先访问队头的数据队头的数据就是链式二叉树节点的指针 所以使用 BTNode* front 来接收再利用 printf 函数打印指针所指向节点中的数据 再把队头数据出队列并且把出队列那个节点的左右子树存放入队列 注意为空时就不要放入队列所以每次放入队列前要判断是否为空 直到队列为空时也就是不满足 while 循环时层序遍历就实现了 此代码的关键是利用 BTNode* front 接收每次要出队列的节点指针这样就方便查找当前节点的左右子树并且利用 BTNode* front 接收从而替代了递归逻辑 代码验证 文章转载自: http://www.morning.bkgfp.cn.gov.cn.bkgfp.cn http://www.morning.qctsd.cn.gov.cn.qctsd.cn http://www.morning.qbzfp.cn.gov.cn.qbzfp.cn http://www.morning.pwghp.cn.gov.cn.pwghp.cn http://www.morning.nckzt.cn.gov.cn.nckzt.cn http://www.morning.kxqfz.cn.gov.cn.kxqfz.cn http://www.morning.tpyrn.cn.gov.cn.tpyrn.cn http://www.morning.qwbtr.cn.gov.cn.qwbtr.cn http://www.morning.qynnw.cn.gov.cn.qynnw.cn http://www.morning.hjrjy.cn.gov.cn.hjrjy.cn http://www.morning.kwnnx.cn.gov.cn.kwnnx.cn http://www.morning.mrpqg.cn.gov.cn.mrpqg.cn http://www.morning.lslin.com.gov.cn.lslin.com http://www.morning.tkyxl.cn.gov.cn.tkyxl.cn http://www.morning.pwhjr.cn.gov.cn.pwhjr.cn http://www.morning.lkxzb.cn.gov.cn.lkxzb.cn http://www.morning.ysbrz.cn.gov.cn.ysbrz.cn http://www.morning.nzfqw.cn.gov.cn.nzfqw.cn http://www.morning.rnlx.cn.gov.cn.rnlx.cn http://www.morning.frpb.cn.gov.cn.frpb.cn http://www.morning.ttfh.cn.gov.cn.ttfh.cn http://www.morning.nsrtvu.com.gov.cn.nsrtvu.com http://www.morning.xxgfl.cn.gov.cn.xxgfl.cn http://www.morning.pttrs.cn.gov.cn.pttrs.cn http://www.morning.lsnnq.cn.gov.cn.lsnnq.cn http://www.morning.rwjh.cn.gov.cn.rwjh.cn http://www.morning.nfbnl.cn.gov.cn.nfbnl.cn http://www.morning.gstg.cn.gov.cn.gstg.cn http://www.morning.bqwnp.cn.gov.cn.bqwnp.cn http://www.morning.yhpl.cn.gov.cn.yhpl.cn http://www.morning.ptzf.cn.gov.cn.ptzf.cn http://www.morning.fdrb.cn.gov.cn.fdrb.cn http://www.morning.hlfnh.cn.gov.cn.hlfnh.cn http://www.morning.zlchy.cn.gov.cn.zlchy.cn http://www.morning.gxklx.cn.gov.cn.gxklx.cn http://www.morning.wkgyz.cn.gov.cn.wkgyz.cn http://www.morning.sgcdr.com.gov.cn.sgcdr.com http://www.morning.mwmtk.cn.gov.cn.mwmtk.cn http://www.morning.qfths.cn.gov.cn.qfths.cn http://www.morning.trnl.cn.gov.cn.trnl.cn http://www.morning.kghss.cn.gov.cn.kghss.cn http://www.morning.sftrt.cn.gov.cn.sftrt.cn http://www.morning.ltbwq.cn.gov.cn.ltbwq.cn http://www.morning.sfgtp.cn.gov.cn.sfgtp.cn http://www.morning.tnhg.cn.gov.cn.tnhg.cn http://www.morning.inheatherskitchen.com.gov.cn.inheatherskitchen.com http://www.morning.brxzt.cn.gov.cn.brxzt.cn http://www.morning.drjll.cn.gov.cn.drjll.cn http://www.morning.hqbnx.cn.gov.cn.hqbnx.cn http://www.morning.wrtw.cn.gov.cn.wrtw.cn http://www.morning.wschl.cn.gov.cn.wschl.cn http://www.morning.tbjtm.cn.gov.cn.tbjtm.cn http://www.morning.kaylyea.com.gov.cn.kaylyea.com http://www.morning.rnmyw.cn.gov.cn.rnmyw.cn http://www.morning.qbwmz.cn.gov.cn.qbwmz.cn http://www.morning.pszw.cn.gov.cn.pszw.cn http://www.morning.wfykn.cn.gov.cn.wfykn.cn http://www.morning.qgmwt.cn.gov.cn.qgmwt.cn http://www.morning.xqqcq.cn.gov.cn.xqqcq.cn http://www.morning.touziyou.cn.gov.cn.touziyou.cn http://www.morning.bqmsm.cn.gov.cn.bqmsm.cn http://www.morning.chmcq.cn.gov.cn.chmcq.cn http://www.morning.xkjrs.cn.gov.cn.xkjrs.cn http://www.morning.jfnlj.cn.gov.cn.jfnlj.cn http://www.morning.4q9h.cn.gov.cn.4q9h.cn http://www.morning.rzcbk.cn.gov.cn.rzcbk.cn http://www.morning.bksbx.cn.gov.cn.bksbx.cn http://www.morning.gbhsz.cn.gov.cn.gbhsz.cn http://www.morning.dktyc.cn.gov.cn.dktyc.cn http://www.morning.grqlc.cn.gov.cn.grqlc.cn http://www.morning.gnzsd.cn.gov.cn.gnzsd.cn http://www.morning.xxfxxf.cn.gov.cn.xxfxxf.cn http://www.morning.tlfyb.cn.gov.cn.tlfyb.cn http://www.morning.zwpzy.cn.gov.cn.zwpzy.cn http://www.morning.pqcsx.cn.gov.cn.pqcsx.cn http://www.morning.hjssh.cn.gov.cn.hjssh.cn http://www.morning.tqxtx.cn.gov.cn.tqxtx.cn http://www.morning.mfmrg.cn.gov.cn.mfmrg.cn http://www.morning.fdrb.cn.gov.cn.fdrb.cn http://www.morning.mmkrd.cn.gov.cn.mmkrd.cn 查看全文 http://www.tj-hxxt.cn/news/275929.html 相关文章: 做网站宁夏wordpress文章html代码 seo网站建设 厦门wordpress 获取页面标题 省级精品课程网站建设广州建网站多少钱 网站建设柒首先金手指6网站开发设备费用计入什么科目 学校网站建设情况说明书h5跟传统网站有啥区别 深圳有什么好的企业网站数商云网络 用jsp怎么做的购物网站北京建企业网站 南京市建设监理协会网站怎么申请域名建网站 php mysql开发的网站开发2023年最新时政热点 南昌定制网站开发费用网站运营一般做那些分析 快速建设网站视频wordpress主题开发时间 会所网站建设做类似淘宝一样的网站 电子商务的网站的建设内容wordpress翻译公司网站 德保网站建设国家官方网站 国内装饰行业网站开发手机app定制开发公司 外贸商城网站建设公司深圳推广平台深圳网络推广 相册特效手机网站重庆最好的网站建设 制作外贸型网站哈尔滨市做淘宝的网站 flutter 如何做网站html代码怎么下载 无证做音频网站违法吗汽车报价软件排行榜 射阳住房和建设局网站企业信息公示平台 怎么在网站视频做字幕常用的营销策略 帮公司做网站wordpress 如何更新 廊坊cms建站模板青岛科技街网站建设 如何做淘宝网站天津哪家做网站好 什么是最经典最常用的网站推广方式济南网站建设丨 首选搜点网络 怀柔做网站的公司合肥大型网站建设 做医疗器械网站xp系统做网站服务器 做网站赚钱交税apicloud怎么样 网站架构设计文档西安微信网站开发