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

leetcode做题笔记103. 二叉树的锯齿形层序遍历

给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。

思路一:BFS

#define N 2000int** zigzagLevelOrder(struct TreeNode* root, int* returnSize, int** returnColumnSizes) {*returnSize = 0;if (root == NULL) {return NULL;}int** ans = malloc(sizeof(int*) * N);*returnColumnSizes = malloc(sizeof(int) * N);struct TreeNode* nodeQueue[N];int left = 0, right = 0;nodeQueue[right++] = root;bool isOrderLeft = true;while (left < right) {int levelList[N * 2];int front = N, rear = N;int size = right - left;for (int i = 0; i < size; ++i) {struct TreeNode* node = nodeQueue[left++];if (isOrderLeft) {levelList[rear++] = node->val;} else {levelList[--front] = node->val;}if (node->left) {nodeQueue[right++] = node->left;}if (node->right) {nodeQueue[right++] = node->right;}}int* tmp = malloc(sizeof(int) * (rear - front));for (int i = 0; i < rear - front; i++) {tmp[i] = levelList[i + front];}ans[*returnSize] = tmp;(*returnColumnSizes)[*returnSize] = rear - front;(*returnSize)++;isOrderLeft = !isOrderLeft;}return ans;
}

分析:

本题与上题相似,直接使用广度优先搜索将每层数放入数组再输出即可,注意        (*returnColumnSizes)[*returnSize] = rear - front;

总结:

本题考察广度优先搜索算法,将每层按左向右再右向左的顺序放入数组再输出即可

http://www.lryc.cn/news/140522.html

相关文章:

  • 如果将PC电脑变成web服务器:利用Nignx反向代理绕过运营商对80端口封锁
  • Eureka:服务注册-信息配置-自我保护机制
  • C++二叉树进阶
  • layui tree组件取消勾选
  • 【Android基础面试题】ViewPager与ViewPager2的区别
  • springCloudGateway网关配置
  • kali 2023.3新增工具
  • W25Q64 驱动--基于SPI2接口
  • 禁用无线键盘指定按键
  • 分数规划(二分)
  • Vue2向Vue3过度Vue3状态管理工具Pinia
  • STM32--SPI通信与W25Q64(1)
  • 版本控制工具Git常见用法
  • Multisim软件安装包分享(附安装教程)
  • 【android12-linux-5.1】【ST芯片】HAL移植后开机卡死
  • 线程池也就那么一回事嘛!
  • 设计模式(11)观察者模式
  • 开源的安全性:挑战与机会
  • wireshark 流量抓包例题重现
  • Smartbi电子表格软件版本更新,首次推出Excel轻应用和语音播放
  • ElasticSearch简介、安装、使用
  • Navicat 连接 mysql 问题
  • Adobe Media Encoder软件安装包分享(附安装教程)
  • [C#][原创]操作注册表一些注意点
  • “华为杯”研究生数学建模竞赛2016年-【华为杯】C题:基于无线通信基站的室内三维定位问题
  • 双目视觉之-棋盘格标定板制作
  • 自然对数底e的一些事
  • React Hooks 全解:零基础入门
  • webrtc在js里的实现
  • 熊猫:完整的初学者指南