deno.land / x / masx200_leetcode_test@10.6.5 / vertical-order-traversal-of-a-binary-tree / index.ts

نووسراو ببینە
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import { TreeNode } from "../mod.ts";
export default function verticalTraversal(root: TreeNode | null): number[][] { const res = [] as number[][]; if (!root) return res; let current = [[0, 0, root]] as [number, number, TreeNode][]; const map = new Map<number, [number, number][]>(); while (current.length > 0) { const next = [] as [number, number, TreeNode][];
for (const [x, y, node] of current) { const arr = map.get(x) ?? ([] as [number, number][]); map.set(x, arr); arr.push([y, node.val]); if (node.left) next.push([x - 1, y + 1, node.left]); if (node.right) next.push([x + 1, y + 1, node.right]); }
current = next; }
for ( const arr of Array.from(map) .sort((a, b) => a[0] - b[0]) .map((a) => a[1]) ) { res.push( arr .sort((a, b) => (a[0] === b[0] ? a[1] - b[1] : a[0] - b[0])) .map((a) => a[1]), ); } return res;}
masx200_leetcode_test

Version Info

Tagged at
a year ago