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

news2025/2/27 16:32:05

给你二叉树的根节点 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.coloradmin.cn/o/862351.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring @Profile注解使用和源码解析

使用 带有Profile的注解的bean的不会被注册进IOC容器&#xff0c;需要为其设置环境变量激活&#xff0c;才能注册进IOC容器&#xff0c;如下通过setActiveProfiles设置了dev值&#xff0c;那么这三个值所对应的Bean会被注册进IOC容器。当然&#xff0c;我们在实际使用中&#…

Grafana技术文档--基本安装-docker安装并挂载数据卷-《十分钟搭建》-附带监控服务器

阿丹&#xff1a; Prometheus技术文档--基本安装-docker安装并挂载数据卷-《十分钟搭建》_一单成的博客-CSDN博客 在正确安装了Prometheus之后开始使用并安装Grafana作为Prometheus的仪表盘。 一、拉取镜像 搜索可拉取版本 docker search Grafana拉取镜像 docker pull gra…

cmake (更新中)

概述 关于 CMake CMake 是一个可扩展的开源系统&#xff0c;以一种与操作系统和编译器无关的方式来管理构建过程。与许多跨平台系统不同&#xff0c;CMake 被设计为与本机构建环境配合使用。在每个源代码目录中放置简单的配置文件&#xff08;称为 CMakeLists.txt 文件&#xf…

VLOOKUP函数使用

在Excel中&#xff0c;VLOOKUP函数用于在一个范围内查找某个值&#xff0c;并返回该值所在行的指定列的内容。VLOOKUP函数的基本语法如下&#xff1a; VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])参数说明&#xff1a; lookup_value&#xff1a;要查…

MySQL_事务学习笔记

事务 注意&#xff1a;一定要使用 Innodb 存储引擎 概述&#xff1a;一组操作的集合&#xff0c;是不可分割的工作单元&#xff0c;会把一个部分当成一个整体来处理&#xff0c;事务会把操作同时提交或者是撤销。要么同时成功&#xff0c;要么同时失败。 比如&#xff1a;上云…

汽车制造业上下游协作时 外发数据如何防泄露?

数据文件是制造业企业的核心竞争力&#xff0c;一旦发生数据外泄&#xff0c;就会给企业造成经济损失&#xff0c;严重的&#xff0c;可能会带来知识产权剽窃损害、名誉伤害等。汽车制造业&#xff0c;会涉及到重要的汽车设计图纸&#xff0c;像小米发送汽车设计图纸外泄事件并…

离线安装vscode插件,导出 Visual Studio Code 的扩展应用,并离线安装

在没有网络的情况下&#xff0c;如何安装vscode插件 1.使用之前电脑安装过的插件包 Visual Studio Code 的扩展应用安装位置在文件夹 .vscode/extensions 下。不同平台&#xff0c;它位于&#xff1a; Windows %USERPROFILE%\.vscode\extensions Mac ~/.vscode/extensions L…

AIRIOT出席IOTE生态行·北京物联网应用交流大会

8月8日&#xff0c;由物联传媒、IOTE物联展、AIoT库、AIoT星图研究院联合主办的IOTE生态行北京物联网应用交流大会圆满结束&#xff0c;超300位业界同行同台交流。 航天科技控股集团股份有限公司受邀参会&#xff0c;旗下AIRIOT物联网平台产品负责人段丽娜发表演讲&#xff0c;…

双向循环链表、dancing links

目录 双向循环链表 力扣 426. 将二叉搜索树转化为排序的双向链表 十字交叉双向循环链表&#xff08;dancing links&#xff09; 精确覆盖问题 dancing links X算法&#xff08;V1递归版&#xff09; POJ 3740 Easy Finding 数独 X算法优化 X算法&#xff08;V2非递归…

使用Python爬取某查查APP端(Appium自动化篇)

1. 写在前面 某查查网站反爬虫风控还是较强的&#xff0c;之后会分别介绍一下PC端协议、APP端自动化、APP端接口协议三种采集方案。这里主要介绍APP端的自动化方式&#xff0c;APP端自动化方式需要登陆账号&#xff0c;协议的话需要签名授权&#xff08;自动化经测试没有太多限…

生产事故-走近科学之消失的JWT

0x01 事故背景 2021年11月26日01时10分&#xff0c;P公司正在进行某业务系统的生产环境部署操作&#xff0c;但其实早在00时30分的时候&#xff0c;他们已经完成过一次部署了&#xff0c;但是奇怪的是无论如何都通不过验证&#xff0c;无奈只好推倒重来&#xff0c;如此反复了…

opencv实战项目 实现手势跟踪并返回位置信息(封装调用)

OpenCV 是一个基于 Apache2.0 许可&#xff08;开源&#xff09;发行的跨平台计算机视觉和机器学习软件库&#xff0c;可以运行在Linux、Windows、Android和Mac OS操作系统上。 需要提前准备opencv 和 mediapipe库 pip --default-timeout5000 install -i https://pypi.tuna.tsi…

腾讯云服务器使用教程_手把手图文详细介绍

腾讯云服务器使用教程包括注册账号实名认证、选择云服务器CVM或轻量应用服务器CPU内存带宽和系统盘配置、安全设置和云服务器远程连接、安全组端口开通教程、云服务器环境部署以搭建网站为例手把手网站上线&#xff0c;云服务器文件传输和数据备份以及技术支持等详细说明&#…

【Linux】用户和权限

文章目录 前言什么是 root 用户su 命令和 exit 命令sudo 命令为普通用户配置 sudo 认证 用户、用户组管理什么是Linux 用户和用户组用户组管理用户管理创建用户删除用户查看用户所属组将指定用户添加到指定用户组中 查看当前系统的用户和用户组 权限控制权限信息 修改权限控制修…

MyBatisX自动和数据库的字段关联

先下个插件 右键数据库&#xff0c;点MybatisX-Generator 在根据自己需求勾选 actual column&#xff1a;保证数据库的驼峰命名生效

第10集丨Vue 江湖 —— 表单输入绑定

目录 一、v-model1.1 基本用法1.2 值绑定1.3 修饰符1.3.1 .lazy1.3.2 .number1.3.3 .trim 二、总结2.1 案例2.2 效果 一、v-model 1.1 基本用法 功能&#xff1a; v-model指令在表单 <input>、<textarea> 及 <select> 元素上创建双向数据绑定。它会根据控件…

【人工智能前沿弄潮】——生成式AI系列:扩散模型及稳定扩散模型

VAE、GAN的出现&#xff0c;使得生成式AI越发火热&#xff0c;如今扩散模型的出现与兴起&#xff0c;更是将AIGC推到了人工智能风口&#xff0c;被视作如今人工智能生成艺术领域取得突破的主要因素。相较于VAE和GAN,扩散模型生成的图片质量更好。随着transformer架构的出现和pr…

Uniapp当中使用腾讯位置路线规划插件保姆教学

首先我们在使用腾讯地图插件之前我们需要先做几点准备 1&#xff1a;我们需要在腾讯地图位置服务当中注册账号以及在控制台当中创建应用和创建key 这里在创建应用当中应用类型一定要选出行类型&#xff0c;否则后期可能会出现问题。 我们创建完应用之后&#xff0c;点击创建…

elementUi表单恢复至初始状态并不触发表单验证

elementUi表单恢复至初始状态并不触发表单验证 1.场景再现2.解决方法 1.场景再现 左侧是树形列表&#xff0c;右侧是显示节点的详情&#xff0c;点击按钮应该就是新增一个规则的意思&#xff0c;表单内容是没有改变的&#xff0c;所以就把需要把表单恢复至初始状态并不触发表单…

线性代数(三) 线性方程组向量空间

前言 如何利用行列式&#xff0c;矩阵求解线性方程组。 线性方程组的相关概念 用矩阵方程表示 齐次线性方程组&#xff1a;Ax0&#xff1b;非齐次线性方程组&#xff1a;Axb. 可以理解 齐次线性方程组 是特殊的 非齐次线性方程组 如何判断线性方程组的解 其中R(A)表示矩阵A的…