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

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

题目

给你一棵以 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表示走右边

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.kler.cn/news/302549.html

相关文章:

  • 腾讯云2024年数字生态大会开发者嘉年华(数据库动手实验)TDSQL-C初体验
  • 62. 不同路径
  • 户用光伏业务市场开发的步骤
  • 走进低代码报表开发(二):高效报表设计新利器
  • 基于SpringMVC的API灰度方案
  • SuperMap GIS基础产品FAQ集锦(20240911)
  • 使用AI大模型进行企业数据分析与决策支持
  • Redis 的标准使用规范之数据类型使用规范
  • MySQL总结(上)
  • 决策树(Decison Tree)—有监督学习方法、概率模型、生成模型、非线性模型、非参数化模型、批量学习
  • 如何测试你购买的IP的丢包率是否正常
  • 市场上便宜好用的量化交易软件-QMT!QMT系统函数之handlebar - 行情事件函数
  • Matlab simulink建模与仿真 第十一章(端口及子系统库)【下】
  • 力扣337-打家劫舍 III(Java详细题解)
  • mac安装swoole过程
  • 大模型的第一个杀手级应用场景出来了
  • SQL的优化和引擎有哪些
  • Win11 频繁蓝屏重启
  • GIS应届生不考研,不考公,不考编,未来要怎么安排?
  • 【规范】Git Commit 约定式提交规范
  • MySQL表操作
  • BClinux docker安装kong和konga
  • 跨系统环境下LabVIEW程序稳定运行
  • 基于SpringBoot+Vue的瑜伽体验课预约管理系统
  • 《ORANGE‘s 一个操作系统的实现》-- ubuntu14.04下bochs2.3.5的配置与使用
  • 【JAVA入门】Day41 - 字节缓冲流和字符缓冲流
  • C++操作符重载实例(独立函数)
  • 《网络故障处理案例:公司网络突然中断》
  • 详说 类和对象
  • element form rules 验证数组对象属性时如何写判断规则