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

深圳网站设计网站建设哪个好如何做网站平台

深圳网站设计网站建设哪个好,如何做网站平台,做美食网站的目的,wordpress安装权限管理题目 给你一棵以 root 为根的二叉树,二叉树中的交错路径定义如下: 选择二叉树中 任意 节点和一个方向(左或者右)。 如果前进方向为右,那么移动到当前节点的的右子节点,否则移动到它的左子节点。 改变前进方…

题目

给你一棵以 root 为根的二叉树,二叉树中的交错路径定义如下:
选择二叉树中 任意 节点和一个方向(左或者右)。
如果前进方向为右,那么移动到当前节点的的右子节点,否则移动到它的左子节点。
改变前进方向:左变右或者右变左。
重复第二步和第三步,直到你在树中无法继续移动。
交错路径的长度定义为:访问过的节点数目 - 1(单个节点的路径长度为 0 )。
请你返回给定树中最长 交错路径 的长度。

一、代码实现

func longestZigZag(root *TreeNode) int {maxLen := 0var dfs func(*TreeNode) (int, int)dfs = func(node *TreeNode) (int, int) {if node == nil {return 0, 0}_, leftRight := dfs(node.Left)rightLeft, _ := dfs(node.Right)currentLeft, currentRight := 0, 0if node.Left != nil {currentLeft = leftRight + 1}if node.Right != nil {currentRight = rightLeft + 1}if currentLeft > maxLen {maxLen = currentLeft}if currentRight > maxLen {maxLen = currentRight}return currentLeft, currentRight}dfs(root)return maxLen
}

二、算法分析

1. 核心思路
  • 动态规划(后序遍历):每个节点维护两个状态,表示从该节点出发下一步向左或向右的最长交错路径长度。
  • 状态转移:当前节点的左方向长度由左子节点的右方向长度加1,右方向长度由右子节点的左方向长度加1。
  • 全局最大值:在遍历过程中不断更新最长路径长度。
2. 关键步骤
  1. 递归终止:空节点返回 (0, 0)
  2. 状态计算:根据左右子节点返回的状态计算当前节点的左右方向长度。
  3. 更新最大值:比较并更新全局最长路径长度。
  4. 返回状态:返回当前节点的左右方向长度供父节点使用。
3. 复杂度
指标说明
时间复杂度O(n)每个节点遍历一次
空间复杂度O(h)递归栈空间,h为树的高度

三、图解示例

在这里插入图片描述

四、边界条件与扩展

1. 特殊场景验证
  • 单节点树:直接返回0。
  • 完全左斜树:所有节点只有左子节点,最长路径为1。
  • 交替路径:如 1→2→3→4→5,路径长度为4。
2. 多语言实现
class TreeNode:def __init__(self, val=0, left=None, right=None):self.val = valself.left = leftself.right = rightclass Solution:def longestZigZag(self, root: TreeNode) -> int:self.max_len = 0def dfs(node):if not node:return (0, 0)left_left, left_right = dfs(node.left)right_left, right_right = dfs(node.right)current_left = left_right + 1 if node.left else 0current_right = right_left + 1 if node.right else 0self.max_len = max(self.max_len, current_left, current_right)return (current_left, current_right)dfs(root)return self.max_len
class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) { val = x; }
}class Solution {private int maxLen = 0;public int longestZigZag(TreeNode root) {dfs(root);return maxLen;}private int[] dfs(TreeNode node) {if (node == null) return new int[]{0, 0};int[] left = dfs(node.left);int[] right = dfs(node.right);int currentLeft = node.left != null ? left[1] + 1 : 0;int currentRight = node.right != null ? right[0] + 1 : 0;maxLen = Math.max(maxLen, Math.max(currentLeft, currentRight));return new int[]{currentLeft, currentRight};}
}

五、总结与扩展

1. 核心创新点
  • 状态定义:通过左右方向状态分离,避免路径方向冲突。
  • 后序遍历:自底向上递推,确保子问题先解。
2. 扩展应用
  • 多方向路径:扩展到多叉树,增加状态维度。
  • 加权路径:节点带权重,求最大权重路径。
  • 实时更新:处理动态树结构,增量维护状态。
3. 工程优化
  • 迭代实现:用栈模拟递归,减少函数调用开销。
  • 并行处理:对子树进行并行计算,提升大规模数据处理效率。
http://www.dtcms.com/wzjs/383692.html

相关文章:

  • 小程序 企业网站站长之家的seo综合查询工具
  • 做美国直邮物流网站seo推广培训课程
  • 海珠区做网站的公司百度推广seo怎么学
  • 课程网站建设ppt模板制作网站需要什么技术
  • 网站免费正能量直接进入检察官免费推广软件工具
  • 武汉市人民政府电话优化大师客服
  • 软件系统定制开发百度seo词条优化
  • app门户网站百度竞价代理商
  • wordpress软件站站长网站优化公司
  • 静态网站开发课程相关新闻营销策划经典案例
  • 个人兼职网站建设html网页制作代码
  • 网站不显示域名解析错误怎么办网站seo搜索
  • 武汉网站建设云搜123哪家好互联网运营推广公司
  • 初中生怎样做网站赚钱google谷歌搜索引擎入口
  • 哪个网站可以做结婚证电商运营自学全套教程
  • 做网站租服务器多少钱黑帽seo培训网
  • 架设网站软文推广网
  • 开业时网站可以做哪些活动长尾关键词搜索
  • 淘宝客网站做好了该怎么做哈尔滨最新疫情
  • 网站备案被拒绝汽车行业网站建设
  • 做一个交友网站怎样做需要多少资金百度app登录
  • 阿里云win服务器怎么做网站新媒体运营师证书
  • 论文 网站建设可行性怎样在百度上发布免费广告
  • 微网站建设报价方案模板全球网站流量排名100
  • 国内的c2c网站有哪些网站推广是什么意思
  • 装潢公司网站源码php推广网站最有效办法
  • 网站搭建说明北大青鸟培训机构靠谱吗
  • 南通网站建设推广sem外包
  • 搜索引擎 wordpressseo优化啥意思
  • 90设计网站怎么样广告公司取名字参考大全