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

面试热题(二叉树的锯齿形层次遍历)

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

输入:root = [3,9,20,null,null,15,7]
输出:[[3],[20,9],[15,7]]

       大家一定对树的层序遍历已经能够耳熟能详了吧,这道题其实就在二叉树的层序遍历的基础上对它的结果进行了一点点的修改

       通过大家的仔细观察不难发现:是将结果集中的索引为奇数的数组进行了一次翻转,我们就可以利用模拟,它让做什么,我们就做什么的方法进行解决(树的程层序遍历是一定要会的,最好是可以进行默写甚至是进行手撕)

       public List<List<Integer>> zigzagLevelOrder(TreeNode root) {List<List<Integer>> list=new ArrayList<>();if(root==null){return list;}Queue<pair> queue=new LinkedList<>();queue.offer(new pair(root,0));while(!queue.isEmpty()){pair pair=queue.poll();TreeNode node=pair.node;int level=pair.level;if(list.size()==level){list.add(new ArrayList<>());}List<Integer> item=list.get(level);item.add(node.val);if(node.left!=null){queue.offer(new pair(node.left,level+1));}if(node.right!=null){queue.offer(new pair(node.right,level+1));}}return list;}public class pair{private TreeNode  node;private Integer level;public pair(TreeNode node,Integer level){this.level=level;this.node=node;}}

接下来我们对其结果数组进行操作:

 for (int i = 0; i <list.size(); i++) {if(i%2==1){Collections.reverse(list.get(i));}

       这样的这道题就完美的结束了,一般读题的时候都想想可以用我们所熟悉的数据结构或者是模板去以出发点去进行思考,这样的话可以事半功倍

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

相关文章:

  • JVM—内存管理(运行时数据区)、垃圾回收
  • 一百五十一、Kettle——Linux上安装的kettle8.2开启carte服务
  • 19. python从入门到精通——Web编程
  • PostMan 教程
  • Http常见状态码
  • C语言之位运算
  • c语言进阶部分详解(数据在内存中的存储)
  • VIOOVI的ECRS工时分析软件分析:SOP的核心和特征是什么?
  • 无涯教程-Perl - lock函数
  • SpringBoot案例-部门管理-前后端联调
  • 每天一道leetcode:139. 单词拆分(动态规划中等)
  • 【C++】友元(含内部类)
  • SQL | 检索数据
  • typeScript 之 运算符
  • BGP实验
  • pytest fixture 常用参数
  • vue项目里面有多个模块的服务,前端处理url转发
  • web表单
  • C++BUG记录:文件无法创建,文件路径正确但使用了Format
  • nodejs框架 express koa介绍以及从零搭建 koa 模板
  • 84 | Python可视化篇 —— Pyecharts数据可视化
  • 【Nginx】Nginx负载均衡
  • vue3报错
  • 每日一学——IP地址和子网掩码
  • 【redis 3.2 集群】
  • JS 解决鼠标悬浮显示弹窗 迅速离开时弹窗显示到其他位置的延迟问题
  • 树莓派命令行运行调用音频文件的函数,不报错,没有声音解决办法
  • 解决无法引入 mysql-connector-j 的问题
  • 解释器模式(Interpreter)
  • python读入和读出图像