2
* Definition for a binary tree node.3
* function TreeNode(val, left, right) {4
* this.val = (val===undefined ? 0 : val)5
* this.left = (left===undefined ? null : left)6
* this.right = (right===undefined ? null : right)10
* @param {TreeNode} root11
* @return {number[][]}13
var verticalTraversal = function (root) {18
const preOrder = (r = root, mid = 0, d = 0) => {22
if (ans.length < mi + 1) ans.push([]);23
ans[mi].push({ v: r.val, d });28
ans.unshift([{ v: r.val, d }]);31
ans[idx].push({ v: r.val, d });36
ans.push([{ v: r.val, d }]);39
ans[idx].push({ v: r.val, d });43
preOrder(r.left, mid - 1, d + 1);44
preOrder(r.right, mid + 1, d + 1);47
const sortByDepthOrVal = (a, b) => {48
if (a.d == b.d) return a.v - b.v;51
ans = ans.map((col) => col.sort(sortByDepthOrVal).map((a) => a.v));