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

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.jsqmd.com/news/234142/

相关文章:

  • 分类模型压缩终极方案:云端量化蒸馏全流程
  • 【然然管理系统】基于 SpringBoot+MyBatisPlus+Freemarker 实现代码生成功能(上)
  • MiDaS模型性能优化:推理速度与精度平衡
  • MiDaS模型详解:轻量高效的秘密
  • 【Java毕设源码分享】基于springboot+vue的高中学生素质评价档案系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 支持实时语义分析的中文NER工具|Cyberpunk风格WebUI体验
  • 无需编码!用AI 智能实体侦测服务快速实现文本信息抽取
  • 如何让AI看懂产线缺陷?Qwen3-VL-WEBUI落地实践全解析
  • 【Java毕设源码分享】基于springboot+vue的公司人事管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 单目深度估计进阶:MiDaS高级应用指南
  • 一键启动Qwen3-VL-4B-Instruct|WEBUI镜像让多模态模型开箱即用
  • 基于MiDaS的深度感知:快速部署与使用
  • 基于UDS协议的Bootloader定制之旅
  • 简单理解:STM32 互补 PWM 死区时间,档位设计 + 原理 + 实操全解析
  • 从零开始使用MiDaS:深度估计实战指南
  • Rembg模型架构深度解析:U2NET原理
  • 单目深度估计MiDaS:安防监控场景实践案例
  • MiDaS部署技巧:如何优化CPU环境下的推理速度
  • 从零部署Qwen2.5-7B:vLLM推理加速与Gradio界面集成
  • Rembg抠图API监控:实时性能仪表盘
  • MiDaS实战:工业检测深度估计案例
  • MiDaS实战教程:无需GPU的高效深度感知方案
  • 导师严选9个AI论文写作软件,助本科生轻松搞定毕业论文!
  • 简单理解:什么是双线接口(TWI)
  • 单目视觉测距系统:基于MiDaS的完整部署教程
  • 单目视觉测距系统:基于MiDaS的完整部署教程
  • 单目视觉测距系统:基于MiDaS的完整部署教程
  • MiDaS模型深度解析:从原理到部署的完整教程
  • 数据库设计利器:ER图完全指南
  • Rembg批量处理效率:不同规模测试对比