Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 2bfcb9f

Browse files
feat: add typescript solution to lc problem: No.0987 (doocs#625)
No.0987.Vertical Order Traversal of a Binary Tree
1 parent cc7484c commit 2bfcb9f

File tree

3 files changed

+160
-0
lines changed

3 files changed

+160
-0
lines changed

‎solution/0900-0999/0987.Vertical Order Traversal of a Binary Tree/README.md‎

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,61 @@
8383

8484
```
8585

86+
### **TypeScript**
87+
88+
```ts
89+
/**
90+
* Definition for a binary tree node.
91+
* class TreeNode {
92+
* val: number
93+
* left: TreeNode | null
94+
* right: TreeNode | null
95+
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
96+
* this.val = (val===undefined ? 0 : val)
97+
* this.left = (left===undefined ? null : left)
98+
* this.right = (right===undefined ? null : right)
99+
* }
100+
* }
101+
*/
102+
103+
function verticalTraversal(root: TreeNode | null): number[][] {
104+
let solution = [];
105+
dfs(root, 0, 0, solution);
106+
// 优先依据i=2排序, 然后依据i=1排序
107+
solution.sort(compare);
108+
// console.log(solution);
109+
let ans = [];
110+
let pre = Number.MIN_SAFE_INTEGER;
111+
for (let node of solution) {
112+
const [val, , idx] = node;
113+
if (idx != pre) {
114+
ans.push([]);
115+
pre = idx;
116+
}
117+
ans[ans.length - 1].push(val);
118+
}
119+
return ans;
120+
};
121+
122+
function compare(a: Array<number>, b: Array<number>) {
123+
const [a0, a1, a2] = a, [b0, b1, b2] = b;
124+
if (a2 == b2) {
125+
if (a1 == b1) {
126+
return a0 - b0;
127+
}
128+
return a1 - b1;
129+
}
130+
return a2 - b2;
131+
}
132+
133+
function dfs(root: TreeNode | null, depth: number, idx: number, solution: Array<Array<number>>) {
134+
if (!root) return;
135+
solution.push([root.val, depth, idx]);
136+
dfs(root.left, depth + 1, idx - 1, solution);
137+
dfs(root.right, depth + 1, idx + 1, solution);
138+
}
139+
```
140+
86141
### **...**
87142

88143
```

‎solution/0900-0999/0987.Vertical Order Traversal of a Binary Tree/README_EN.md‎

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,61 @@ Note that the solution remains the same since 5 and 6 are in the same location a
7474

7575
```
7676

77+
### **TypeScript**
78+
79+
```ts
80+
/**
81+
* Definition for a binary tree node.
82+
* class TreeNode {
83+
* val: number
84+
* left: TreeNode | null
85+
* right: TreeNode | null
86+
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
87+
* this.val = (val===undefined ? 0 : val)
88+
* this.left = (left===undefined ? null : left)
89+
* this.right = (right===undefined ? null : right)
90+
* }
91+
* }
92+
*/
93+
94+
function verticalTraversal(root: TreeNode | null): number[][] {
95+
let solution = [];
96+
dfs(root, 0, 0, solution);
97+
// 优先依据i=2排序, 然后依据i=1排序
98+
solution.sort(compare);
99+
// console.log(solution);
100+
let ans = [];
101+
let pre = Number.MIN_SAFE_INTEGER;
102+
for (let node of solution) {
103+
const [val, , idx] = node;
104+
if (idx != pre) {
105+
ans.push([]);
106+
pre = idx;
107+
}
108+
ans[ans.length - 1].push(val);
109+
}
110+
return ans;
111+
};
112+
113+
function compare(a: Array<number>, b: Array<number>) {
114+
const [a0, a1, a2] = a, [b0, b1, b2] = b;
115+
if (a2 == b2) {
116+
if (a1 == b1) {
117+
return a0 - b0;
118+
}
119+
return a1 - b1;
120+
}
121+
return a2 - b2;
122+
}
123+
124+
function dfs(root: TreeNode | null, depth: number, idx: number, solution: Array<Array<number>>) {
125+
if (!root) return;
126+
solution.push([root.val, depth, idx]);
127+
dfs(root.left, depth + 1, idx - 1, solution);
128+
dfs(root.right, depth + 1, idx + 1, solution);
129+
}
130+
```
131+
77132
### **...**
78133

79134
```
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* class TreeNode {
4+
* val: number
5+
* left: TreeNode | null
6+
* right: TreeNode | null
7+
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
8+
* this.val = (val===undefined ? 0 : val)
9+
* this.left = (left===undefined ? null : left)
10+
* this.right = (right===undefined ? null : right)
11+
* }
12+
* }
13+
*/
14+
15+
function verticalTraversal(root: TreeNode | null): number[][] {
16+
let solution = [];
17+
dfs(root, 0, 0, solution);
18+
// 优先依据i=2排序, 然后依据i=1排序
19+
solution.sort(compare);
20+
// console.log(solution);
21+
let ans = [];
22+
let pre = Number.MIN_SAFE_INTEGER;
23+
for (let node of solution) {
24+
const [val, , idx] = node;
25+
if (idx != pre) {
26+
ans.push([]);
27+
pre = idx;
28+
}
29+
ans[ans.length - 1].push(val);
30+
}
31+
return ans;
32+
};
33+
34+
function compare(a: Array<number>, b: Array<number>) {
35+
const [a0, a1, a2] = a, [b0, b1, b2] = b;
36+
if (a2 == b2) {
37+
if (a1 == b1) {
38+
return a0 - b0;
39+
}
40+
return a1 - b1;
41+
}
42+
return a2 - b2;
43+
}
44+
45+
function dfs(root: TreeNode | null, depth: number, idx: number, solution: Array<Array<number>>) {
46+
if (!root) return;
47+
solution.push([root.val, depth, idx]);
48+
dfs(root.left, depth + 1, idx - 1, solution);
49+
dfs(root.right, depth + 1, idx + 1, solution);
50+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /