给定一棵二叉树,任务是找到给定二叉树的最长直线路径的长度。
Straight Path is defined as the path that starts from any node and ends at another node in the tree such that the direction of traversal from the source node to the destination node always remains the same i.e., either left or right, without any change in direction that is left->left ->left or right->right->right direction.
例子:
Input:
Output: 2
Explanation:
The path shown in green is the longest straight path from 4 to 6 which is of length 2.
Input:
Output: 3
Explanation:
The path shown in green is the longest straight path from 5 to 0 which is of length 3.
方法:想法是使用后序遍历。请按照以下步骤解决问题:
- 对于每个节点,检查当前节点的方向(向左或向右),并检查其子节点的哪个方向为其下方提供了该节点的最长长度。
- 如果当前节点的方向和给出最长长度的子节点的方向不同,则保存该子节点的结果并将另一个子节点的长度传递给其父节点。
- 使用上述步骤在每个节点找到最长的直线路径并保存结果以打印所有直线路径中的最大值。
- 经过以上步骤打印最大路径。
下面是上述方法的实现:
代码块
2
时间复杂度: O(N)
辅助空间: O(1)
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。