力扣每日一题:1372.二叉树中的最长交错路径

embedded/2024/9/22 7:47:46/

题目

给你一棵以 root 为根的二叉树,二叉树中的交错路径定义如下:

  • 选择二叉树中 任意 节点和一个方向(左或者右)。
  • 如果前进方向为右,那么移动到当前节点的的右子节点,否则移动到它的左子节点。
  • 改变前进方向:左变右或者右变左。
  • 重复第二步和第三步,直到你在树中无法继续移动。

交错路径的长度定义为:访问过的节点数目 - 1(单个节点的路径长度为 0 )。

请你返回给定树中最长 交错路径 的长度。

示例 1:

输入:root = [1,null,1,1,1,null,null,1,1,null,1,null,null,null,1,null,1]
输出:3
解释:蓝色节点为树中最长交错路径(右 -> 左 -> 右)。

示例 2:

输入:root = [1,1,1,null,1,null,null,1,1,null,1]
输出:4
解释:蓝色节点为树中最长交错路径(左 -> 右 -> 左 -> 右)。

示例 3:

输入:root = [1]
输出:0

提示:

  • 每棵树最多有 50000 个节点。
  • 每个节点的值在 [1, 100] 之间。

思路:

题目的路线要求左变右,右变左,那么我们可以记录在每次dfs时记录上一次路线是左边还是右边。然后比较这次走左边和走右边的大小。
如果上一次是走左边,那么这一次走右边的len就加1,这一次还是走左边的len就归0.
同理右边也是一样。
n记录上一次走的是左边还是右边
 //1表示走左边,-1表示走右边

java">class Solution {public int longestZigZag(TreeNode root) {return Math.max(dfs(root.left,1,0),dfs(root.right,-1,0));}public int dfs(TreeNode root,int n,int len){   //n记录上一次走的是左边还是右边//1表示走左边,-1表示走右边if(root==null){return len;}if(n==1){return Math.max(dfs(root.right,-1,len+1),dfs(root.left,1,0));}else{return Math.max(dfs(root.left,1,len+1),dfs(root.right,-1,0));}}
}


http://www.ppmy.cn/embedded/113484.html

相关文章

【LLM多模态】CogVideoX文生视频模型结构和训练过程

note 通过两阶段训练3D VAE,对视频进行压缩编码 第一阶段:在较低分辨率和较少帧数的视频上进行训练,学习压缩和重建视频的基本能力第二阶段:在更长的视频上训练,提高模型处理长视频的能力,同时保持帧与帧之…

SAP学习笔记 - 开发06 - CDSView + Fiori Element 之 List Report

上一章讲了Fiori UI5开发环境搭建和实践: - VSCode 安装Fiori Tools插件 - SEGW 创建后台程序,注册服务,Gateway Client确认服务 - 使用SEGW公开的服务来查询数据显示到页面 SAP学习笔记 - 开发05 - Fiori UI5 开发环境搭建2 Fiori Tools…

Vue的路由守卫与Store

路由守卫 全局路由守卫 router.beforeEach((to, from, next) > {console.log("去哪:", to, "那来:", from);// sessionStorage.getItem()//是否运行放行next(); }) //后置路由守卫 router.afterEach((to, from)>{console.log("后置…

MAVEN创建WEB项目

测试使用MAVEN创建WEB项目 创建项目 项目右击-> new-module 因为我们要创建web项目,所以Archetype选择webapp 创建后可以看到pom.xml文件中 打包方式为war包; 运行Web项目 安装tomcat,参考:maven安装依赖-CSDN博客 执行结…

家电制造的隐形守护者:矫平机确保材料完美无瑕

在家电制造业中,产品的美观和耐用性是消费者选择的关键因素。然而,在生产过程中,材料的翘曲问题往往成为影响产品质量的隐形杀手。幸运的是,矫平机的出现,为家电制造商提供了一个有效的解决方案,确保每一件…

如何在微信小程序中实现WebSocket连接

微信小程序作为一种全新的应用形态,凭借其便捷性、易用性受到了广大用户的喜爱。在实际开发过程中,实时通信功能是很多小程序必备的需求。WebSocket作为一种在单个TCP连接上进行全双工通信的协议,能够实现客户端与服务器之间的实时通信。本文…

“更上几层楼”的编程软件

在日益繁忙的工作环境中,选择合适的编程工具已成为提升开发者工作效率的关键。不同的工具能够帮助我们简化代码编写、自动化任务、提升调试速度,甚至让团队协作更加顺畅。那么,哪款编程工具让你的工作效率翻倍?是智能的代码编辑器…

【乐企】调用工具类实现

本文主要是调用工具类的实现 直接看代码吧 1、工具类实现 import cn.hutool.http.HttpRequest; import com.alibaba.fastjson.JSON