题目链接
英文链接:https://leetcode.com/problems/vertical-order-traversal-of-a-binary-tree/
中文链接:https://leetcode-cn.com/problems/vertical-order-traversal-of-a-binary-tree/
题目详述
给定二叉树,按垂序遍历返回其结点值。
对位于 (X, Y) 的每个结点而言,其左右子结点分别位于 (X-1, Y-1) 和 (X+1, Y-1)。
把一条垂线从 X = -infinity 移动到 X = +infinity ,每当该垂线与结点接触时,我们按从上到下的顺序报告结点的值( Y 坐标递减)。
如果两个结点位置相同,则首先报告的结点值较小。
按 X 坐标顺序返回非空报告的列表。每个报告都有一个结点值列表。
示例 1:
1 | 输入:[3,9,20,null,null,15,7] |
示例 2:
1 | 输入:[1,2,3,4,5,6,7] |
提示:
- 树的结点数介于 1 和 1000 之间。
- 每个结点值介于 0 和 1000 之间。
题目详解
- 首先遍历得到所有带坐标的结点。
- 然后对结点进行排序,按照 x 从小到大、y 从大到小、结点值从小到大的顺序。
- 最后遍历得到按 X 坐标顺序返回非空报告的列表。
1 | public class LeetCode_00987 { |