二叉树中的最长交错路径

题目链接

二叉树中的最长交错路径

题目描述



注意点

  • 每个节点的值在 [1, 100] 之间

解答思路

  • 深度优先遍历整棵树,遍历的同时需要将到达根节点是向左交叉还是向右交叉以及路径长度传递到子树。当根节点是向左交叉遍历而来,子树想和根节点组成路径就只能向右交叉(也就是只能到达右子树),当然也可以向左交叉,但此时左子树无法与根节点组成路径,左子树只能重新作为根节点继续向下遍历(向右交叉,路径为0);当根节点是向右交叉遍历而来,也是同理
  • 因为除了根节点以外其余节点都是某个节点的左子树或右子树,所以其只能由向左交叉或向右交叉而来。其作为左子树只能向左交叉,连接其根节点时要想继续向下遍历就只能向右交叉,如果想向左交叉就只能自己作为根节点,路径重置为0;其作为右子树时也是同理

代码

/*** 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;*     }* }*/
class Solution {public int longestZigZag(TreeNode root) {return dfs(root, true, 0) - 1;}public int dfs(TreeNode root, boolean isLeft, int depth) {if (root == null) {return depth;}int leftDepth = 0;int rightDepth = 0;if (isLeft) {// 当前为左,与上一个节点组成路径只能向右,当前节点作为根节点可以向左leftDepth = dfs(root.left, true, 1);rightDepth = dfs(root.right, false, depth + 1);} else {// 当前为右,与上一个节点组成路径只能向左,当前节点作为根节点可以向右leftDepth = dfs(root.left, true, depth + 1);rightDepth = dfs(root.right, false, 1);}return Math.max(leftDepth, rightDepth);}
}

关键点

  • 深度优先遍历的思想

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

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

相关文章

带RS485通讯,开关量输入输出,谐波分析等家户工商业储能智能计量电表ADL3000-E-B/KC可出口欧美UL认证

安科瑞薛瑶瑶18701709087 ◉概述 ADL3000-E-B 导轨式多功能电能表,是主要针对电力系统,工矿企业,公用设施的电能统计、管理需求而设计的一款智能仪表,产品具有精度高、体积小、安装方便等优点。集成常见电力参数测量及电能计量及…

剑指offer--调整数字顺序使奇数位于偶数前面

题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有的偶数位于数组的后半部分. 算法分析 算法:利用快速排序的一次划分思想,后面的奇数往前移,前面的偶数往后移 时间复杂度 :O(n) 空间…

分布式监控平台---Zabbix

一、Zabbix概述 作为一个运维,需要会使用监控系统查看服务器状态以及网站流量指标,利用监控系统的数据去了解上线发布的结果,和网站的健康状态。 利用一个优秀的监控软件,我们可以: 通过一个友好的界面进行浏览整个…

Appian发布最新版本:通过AI流程自动化推动业务发展

Appian公司于2024年4月16日在弗吉尼亚州麦克莱恩宣布推出Appian平台的最新版本。此版本引入了Process HQ,这是一个集流程挖掘和企业AI于一体的系统,结合了Appian的数据平台。Process HQ为企业运营提供前所未有的可见性,支持数据驱动的决策和流…

使用ERNIE SDK和Comate开发AI“划拳”游戏!

作者晓飞好,飞桨星河社区开发者,金融行业软件开发工程师,对大模型应用开发比较感兴趣。个人主页链接:https://aistudio.baidu.com/personalcenter/thirdview/48323 技术的迅速发展为我们带来了无限的创新可能,大模型技…

Keil中编译无error(有warning),但程序无法运行的一种情况

问题 void Run_Led(void) {HAL_GPIO_TogglePin(RUN_LED_GPIO_Port, RUN_LED_Pin);Delay_ms(500); }void StartDefaultTask(void *argument) {/* USER CODE BEGIN StartDefaultTask */char c;/* Infinite loop */for(;;){while(1) { Run_Led;}...}非常简单的一个程序&#xf…

vue2 顶象 安全 验证码的使用

顶象-业务安全引领者&#xff0c;让数字世界无风险 类似与这样的登录之前的验证 滑动一个盒子了 或者是 顺序点击文字了 等 <template><a-modal:closable"false":visible"show"cancel"handleCancel":maskClosable"true":wid…

如何用 AI 工具做数据分析与可视化?

&#xff08;注&#xff1a;本文为小报童精选文章。已订阅小报童或加入知识星球「玉树芝兰」用户请勿重复付费&#xff09; 万字长文&#xff0c;助力你用 AI 提升科研效率。 2024 年 4 月 14 日&#xff0c;应武汉大学信息管理学院的邀请&#xff0c;我和北京大学步一老师给几…

分享babylon.js实现Web三维场景

效果截图 实现代码 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><script src"https://cdn.babylon…

虚拟化及Docker基础

一、虚拟化 1.1 云端 1.2 云计算服务模式分层 1.3 虚拟化架构 1.3.1 寄居架构 1.3.2 原生架构 1.4 虚拟化产品 1.4.1 仿真虚拟化产品&#xff08;对系统硬件没有要求&#xff0c;性能最低&#xff09; 1.4.2 半虚拟化 &#xff08;虚拟机可以使用真机物理机&#xff09…

【招聘】数通,云计算岗位持续招聘中

北京、南京、成都、贵州、杭州、深圳、上海 云计算HCS 薪资:8-25k 岗位描述: 1、制定网络安全技术规范及工作标准、负责全国工程团队技术培训及人员培养 2、全国项目技术支持、协助开展广域网的设计、规划、实施及方案交流工作 3、承担公司中、大型集成项目管理&#xff0c;负…

css 文字左右抖动效果

<template><div class"box"><div class"shake shape">抖动特效交字11</div></div> </template><script setup></script><style scope> .shape {margin: 50px;width: 200px;height: 50px;line-heigh…