2026年--Lc337-1372. 二叉树中的最长交错路径(树)--java版

1.题目



2.思路

(1)思路:
可以用dfs,深度优先遍历,但是要符合先遍历左孩子再遍历左孩子的右孩子的规则;或者先遍历右孩子再遍历右孩子的左孩子。最后把路径上的节点个数-1,就是所得的节点个数。
但是最长 ZigZag 不一定从根开始,所以不能只沿着根的一条“左-右-左…”或“右-左-右…”走到底;需要在每个节点都考虑作为起点的可能性。最常用做法是:DFS 时同时维护“当前上一步方向 + 当前长度”,并在每个节点尝试“继续交替”与“重新开始”。

(2)定义 dfs(node, dir, len)

dir=0 表示“上一步走的是左边”(所以下一步要走右才算继续)

dir=1 表示“上一步走的是右边”(所以下一步要走左才算继续)

len 表示当前 ZigZag 的边数长度。

第一个参数 node:表示“当前递归走到的节点是谁”(一个 TreeNode 对象)

第二个参数 dir:表示“到达这个 node 的上一条边方向是什么”(一个方向标记,不是节点)

第三个参数 len:表示“当前 ZigZag 的长度(边数)”

(3)ans 为什么作为全局变量

方便在 DFS 的所有分支里共享并更新最大值。

3.代码实现

/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */classSolution{intans=0;publicintlongestZigZag(TreeNoderoot){if(root==null)return0;// 从根的左边开始,长度为1条边dfs(root.left,0,1);//代表上一步的方向是向左//从根的右边开始,长度为1条边dfs(root.right,1,1);//代表上一步的方向是向右returnans;}//TreeNode node符合zigzag路线的起始节点,不一定是根节点publicvoiddfs(TreeNodenode,intdir,intlen){if(node==null)return;ans=Math.max(ans,len);if(dir==0)//上一步方向是向左,下一步要走右才算继续{dfs(node.right,1,len+1);//向右,相反方向,长度+1dfs(node.left,0,1);//向左,相同方向,重置,长度就是1}else{//上一步方向是向右,下一步要走左才算继续dfs(node.right,1,1);//向右,相同方向,重置,长度就是1dfs(node.left,0,len+1);//向左,相反方向,长度+1}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1149133.shtml

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

相关文章

【然然管理系统】基于 SpringBoot+MyBatisPlus+Freemarker 实现代码生成功能(上)

然然管理系统仓库地址,欢迎移步仓库点个小星星 https://gitee.com/OceanCore/ranran.git https://github.com/qiaoting/ranran.git一、前言在后台管理系统开发中,CRUD 代码的编写占据了大量重复工作 —— 每个业务表都要写 Entity、Mapper、Service、Con…

分类模型压缩终极方案:云端量化蒸馏全流程

分类模型压缩终极方案:云端量化蒸馏全流程 引言 当你开发一个移动端APP时,是否遇到过这样的困境:需要集成一个图像分类功能,但模型体积太大,动辄几百MB,严重影响用户体验?或者尝试在本地训练轻…

【Java毕设源码分享】基于springboot+vue的高中学生素质评价档案系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

MiDaS模型性能优化:推理速度与精度平衡

MiDaS模型性能优化:推理速度与精度平衡 1. 引言:AI 单目深度估计的工程挑战 在计算机视觉领域,单目深度估计(Monocular Depth Estimation)是一项极具挑战性的任务——仅通过一张2D图像推断出场景中每个像素的相对距离…

MiDaS模型详解:轻量高效的秘密

MiDaS模型详解:轻量高效的秘密 1. 技术背景与问题提出 在计算机视觉领域,深度估计是实现3D空间感知的关键技术之一。传统方法依赖双目立体视觉或多传感器融合(如LiDAR),但这些方案成本高、部署复杂,难以在…

如何让AI看懂产线缺陷?Qwen3-VL-WEBUI落地实践全解析

如何让AI看懂产线缺陷?Qwen3-VL-WEBUI落地实践全解析 在一条高速运转的SMT贴片生产线上,一块刚完成回流焊的PCB板被自动传送至视觉检测工位。摄像头瞬间抓拍高清图像——画面中某处焊点隐约泛着不规则的银光。传统算法或许只能标记“异常区域”&#xf…

支持实时语义分析的中文NER工具|Cyberpunk风格WebUI体验

支持实时语义分析的中文NER工具|Cyberpunk风格WebUI体验 1. 项目背景与技术价值 在信息爆炸的时代,非结构化文本数据如新闻、社交媒体内容、企业文档等呈指数级增长。如何从这些海量文本中快速提取关键信息,成为自然语言处理(NL…

无需编码!用AI 智能实体侦测服务快速实现文本信息抽取

无需编码!用AI 智能实体侦测服务快速实现文本信息抽取 在当今信息爆炸的时代,非结构化文本数据(如新闻、报告、社交媒体内容)占据了企业数据总量的80%以上。如何从这些杂乱无章的文字中自动提取出关键信息——比如人名、地名、机…

【Java毕设源码分享】基于springboot+vue的公司人事管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

单目深度估计进阶:MiDaS高级应用指南

单目深度估计进阶:MiDaS高级应用指南 1. 引言:从2D图像到3D空间感知的跃迁 在计算机视觉领域,单目深度估计(Monocular Depth Estimation)是一项极具挑战性但又极具实用价值的技术。传统方法依赖双目立体匹配或多帧运…

一键启动Qwen3-VL-4B-Instruct|WEBUI镜像让多模态模型开箱即用

一键启动Qwen3-VL-4B-Instruct|WEBUI镜像让多模态模型开箱即用 在多模态大模型快速演进的今天,如何将强大的视觉语言能力高效落地到实际应用中,已成为开发者和企业关注的核心问题。部署复杂、依赖繁多、环境配置门槛高,常常成为技…

基于MiDaS的深度感知:快速部署与使用

基于MiDaS的深度感知:快速部署与使用 1. 引言:AI 单目深度估计的现实意义 在计算机视觉领域,从单张2D图像中恢复3D空间结构一直是极具挑战性的任务。传统方法依赖多视角几何或激光雷达等硬件设备,成本高且部署复杂。近年来&…

基于UDS协议的Bootloader定制之旅

基于UDS协议的Bootloader定制 采用autosar架构的标准,DCM集成uds协议,可定制nxpS32K,tc275,tc1782,NXP5746,NXP5748系列等在汽车电子开发领域,基于UDS(Unified Diagnostic Services)…

简单理解:STM32 互补 PWM 死区时间,档位设计 + 原理 + 实操全解析

一、 死区档位 “多高 3 位值” 的设计本质DT 寄存器是 8 位(bit0~bit7),被拆为 高 3 位(档位位) 低 5 位(微调位),一个档位对应多个高 3 位值的核心目的是:在有限的 8 位…

Rembg模型架构深度解析:U2NET原理

Rembg模型架构深度解析:U2NET原理 1. 智能万能抠图 - Rembg 在图像处理与内容创作领域,自动去背景是一项高频且关键的需求。无论是电商商品图精修、社交媒体内容制作,还是AI艺术生成前的素材准备,精准、高效的背景移除技术都至关…

从零开始使用MiDaS:深度估计实战指南

从零开始使用MiDaS:深度估计实战指南 1. 引言:走进单目深度估计的世界 在计算机视觉领域,三维空间感知一直是实现智能交互、机器人导航和增强现实(AR)的核心能力。然而,传统深度感知依赖双目摄像头或多传…

单目深度估计MiDaS:安防监控场景实践案例

单目深度估计MiDaS:安防监控场景实践案例 1. 引言:AI单目深度估计在安防中的价值 随着智能安防系统的不断演进,传统的2D视频监控已难以满足对空间感知和行为理解的高阶需求。如何让摄像头“看懂”三维世界,成为提升异常检测、入…

MiDaS部署技巧:如何优化CPU环境下的推理速度

MiDaS部署技巧:如何优化CPU环境下的推理速度 1. 引言:AI 单目深度估计 - MiDaS 在计算机视觉领域,单目深度估计(Monocular Depth Estimation)是一项极具挑战性但又极具应用价值的技术。它允许AI仅通过一张2D图像推断…

从零部署Qwen2.5-7B:vLLM推理加速与Gradio界面集成

从零部署Qwen2.5-7B:vLLM推理加速与Gradio界面集成 1. 引言 随着大语言模型(LLM)在自然语言处理领域的广泛应用,如何高效部署并快速构建交互式应用成为开发者关注的核心问题。阿里云推出的 Qwen2.5-7B 是当前极具竞争力的开源大…

Rembg抠图API监控:实时性能仪表盘

Rembg抠图API监控:实时性能仪表盘 1. 智能万能抠图 - Rembg 在图像处理与内容创作领域,自动去背景技术已成为提升效率的关键工具。无论是电商商品图精修、社交媒体素材制作,还是AI生成内容(AIGC)的预处理环节&#x…