1372. 二叉树中的最长交错路径
分析
- 路径的定义:
- 选择一个起始节点和方向:
- 如果前进方向是右,则移动到右子节点
- 如果前进方向是左,则移动到左子节点
- 每次移动后,改变方向继续前进
- 选择一个起始节点和方向:
- 递归处理:
- 使用深度优先搜索(DFS)遍历整棵树
- 每次递归返回以:当前节点为起点的最长交错路径长度
- 方向参数:
- 每次递归调用带上方向参数
direction
:0
表示上一次路径方向为左1
表示上一次路径方向为右
- 每次递归调用带上方向参数
- 路径长度计算:
- 若当前节点移动方向为左,则当前路径长度为右子树返回值
+ 1
- 若当前节点移动方向为右,则当前路径长度为左子树返回值
+ 1
- 更新全局最大值
res
- 若当前节点移动方向为左,则当前路径长度为右子树返回值
时间复杂度
时间复杂度 O(n)
空间复杂度
空间复杂度为 O(h)
C++代码
|
|