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

leetcode做题笔记107. 二叉树的层序遍历 II

给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

思路一:递归+调换顺序

int** levelOrderBottom(struct TreeNode* root, int* returnSize, int** returnColumnSizes) {int** levelOrder = malloc(sizeof(int*) * 2001);*returnColumnSizes = malloc(sizeof(int) * 2001);*returnSize = 0;if (!root) {return levelOrder;}struct TreeNode** q = malloc(sizeof(struct TreeNode*) * 2001);int left = 0, right = 0;q[right++] = root;while (left < right) {int len = right - left;int* level = malloc(sizeof(int) * len);(*returnColumnSizes)[*returnSize] = len;for (int i = 0; i < len; ++i) {struct TreeNode* node = q[left++];level[i] = node->val;if (node->left != NULL) {q[right++] = node->left;}if (node->right != NULL) {q[right++] = node->right;}}levelOrder[(*returnSize)++] = level;}for (int i = 0; 2 * i < *returnSize; ++i) {int* tmp1 = levelOrder[i];levelOrder[i] = levelOrder[(*returnSize) - i - 1];levelOrder[(*returnSize) - i - 1] = tmp1;int tmp2 = (*returnColumnSizes)[i];(*returnColumnSizes)[i] = (*returnColumnSizes)[(*returnSize) - i - 1];(*returnColumnSizes)[(*returnSize) - i - 1] = tmp2;}return levelOrder;
}

分析:

本题要求二叉树的层序遍历,并且是从下至上的层序遍历,可以考虑先按照从上至下的层序遍历先将层序遍历结果放到数组中,再对每层的顺序进行交换,即利用tmp1存储每层数据以中间数为分界线交换不同层的数,最后输出levelOrder

总结:

本题考察二叉树层序遍历,为该类题目的变式,将排好序的二叉树调换顺序即可做出

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

相关文章:

  • cdq优化背包转移:GYM104531I
  • STL list基本用法
  • 【ArcGIS微课1000例】0073:ArcGIS探索性回归分析案例
  • docker使用安装教程
  • 【SpringSecurity】五、UserDetails接口和UserDetailsService接口
  • 了解ET模式和LT模式:Linux网络编程中的事件触发方式
  • 内部类和匿名类
  • RISC-V 中国峰会 | OpenMPL引人注目,RISC-V Summit China 2023圆满落幕
  • 时空数据挖掘精选23篇论文解析【AAAI 2023】
  • MySQL 存储过程和函数
  • ClickHouse 使用
  • 通过SSH协议连接远程服务器(Linux)
  • IPC之System V vs POSIX
  • 视频汇聚/视频云存储/视频监控管理平台EasyCVR安全检查的相关问题及解决方法
  • 分布式定时任务
  • 国标GB28181视频平台EasyGBS视频监控平台无法播放,抓包返回ICMP排查过程
  • 计算机毕设 基于深度学习的图像超分辨率重建 - opencv python cnn
  • 基于Java+SpringBoot+Vue前后端分离科研工作量管理系统设计和实现
  • Java复习-17-Object类
  • 数据结构--树4.2.4(树、森林即二叉树的相互转换(仅供参考))
  • MyBatis-Plus 总结
  • 【CSS】轮播图案例开发 ( 基本设置 | 子绝父相 | 浏览器水平居中 | 圆角设置 | 绝对定位居中设置 )
  • leetcode做题笔记111. 二叉树的最小深度
  • ubuntu安装Google Chrome 浏览器和ChromeDriver
  • 猫头虎博主赠书一期:《Kubernetes原生微服务开发》
  • QtC++ 设计模式(四)——策略模式
  • LVS集群和分布式概念
  • javafx应用程序线程异常Exception in thread “JavaFx Application Thread“
  • 大漠插件7.2336
  • 5年测试,面试结束后被HR发朋友圈怼了..(心塞)