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

二叉树——层序遍历

目录

实现层序遍历

判断是否为完全二叉树


实现层序遍历

除了先序遍历,中序遍历,后序遍历外,还可以对二叉树进行层序遍历。设二叉树的结点所在层数为1,层序遍历就是从所在二叉树的根结点出发,首先访问第一层的树根结点,然后再从上至下,从左至右的依次访问,这就是层序遍历。

实现层序遍历需要借助数据结构——队列

队列里的结点是 指向二叉树结点的指针

 

上图两个做标记处,第二个我们可能还可以理解,第一个再加一个struct是否有点多余了呢?

其实不会,而且必须要加,因为:如果只写BTNode*,编译器是不认识的,因为我们的Queue.h中是没有包含Tree.h的,所以我们要加上struct来“声明”这是一个结构体指针。

看到这有人可能会问了,“哎,博主博主,那我加上一个头文件不就可以了吗?”

哈哈,答案当然是“不行❌”

为什么呢?请看下图:

 

void LevelOrder(BTNode* root)
{Queue q;QueueInit(&q);QueuePush(&q, root);while (!QueueEmpty(&q)){BTNode* top = QueueFront(&q);printf("%c", top->data);QueuePop(&q);if(top->left!=NULL)QueuePush(&q, top->left);if (top->right != NULL)QueuePush(&q, top->right);}QueueDestroy(&q);
}

判断是否为完全二叉树

首先我们来认识一下什么是完全二叉树,完全二叉树首先是二叉树,所有的结点度都不超过2,除了最后一层其他层都是满的,最后一层不一定,但结点一定是从左到右依次填充的。

那怎么判断一棵二叉树是不是完全二叉树呢?

依旧队列。如下图:

 

bool BinaryTreeComplete(BTNode* root)
{Queue q;QueueInit(&q);QueuePush(&q, root);while (!QueueEmpty(&q)){BTNode* top = QueueFront(&q);QueuePop(&q);if (top == NULL)break;QueuePush(&q, top->left);QueuePush(&q, top->right);}while (!QueueEmpty(&q)){BTNode* top = QueueFront(&q);QueuePop(&q);if (top){QueueDestroy(&q);return false;}}QueueDestroy(&q);return true;
}

http://www.xdnf.cn/news/441307.html

相关文章:

  • MCU程序加密保护(二)ID 验证法 加密与解密
  • SCDN如何有效防护网站免受CC攻击?——安全加速网络的实战解析
  • 深度强化学习 | 图文详细推导软性演员-评论家SAC算法原理
  • FPGA: Xilinx Kintex 7实现PCIe接口
  • 数据库基础复习笔记
  • 量子计算实用化突破:从云端平台到国际竞合,开启算力革命新纪元
  • 40:相机与镜头选型
  • 虚幻引擎5-Unreal Engine笔记之Qt与UE中的Meta和Property
  • 云图库和黑马点评的项目学习经验
  • [原创](现代Delphi 12指南):[macOS 64bit App开发]: 获取macOS App的Bundle路径信息.
  • list 容器常见用法及实现
  • 基于运动补偿的前景检测算法
  • loss = -F.log_softmax(logits[:, -1, :], dim=1)[0, irrational_id]
  • 【C/C++】自定义类型:结构体
  • Seata源码—2.seata-samples项目介绍
  • 酒店行业冰与火:一边流拍,一边扩张
  • 大模型高效微调技术:从原理到实战应用
  • 深入理解Java适配器模式:从接口兼容到设计哲学
  • Python调用SQLite及pandas相关API详解
  • 解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs-强化学习算法
  • 机器学习第十一讲:标准化 → 把厘米和公斤单位统一成标准值
  • 对抗系统熵增:从被动救火到主动防御的稳定性实战
  • R利用spaa包计算植物/微生物的生态位宽度和重叠指数
  • 序列化和反序列化hadoop实现
  • Math工具类全面指南
  • OpenCV CUDA 模块中用于在 GPU 上计算矩阵中每个元素的绝对值或复数的模函数abs()
  • 量子算法:开启计算新时代的技术密码
  • MATLAB实现振幅调制(AM调制信号)
  • Hadoop-HDFS-Packet含义及作用
  • 通用软件项目技术报告 - 术语词典