File tree Expand file tree Collapse file tree 1 file changed +45
-0
lines changed
binary-tree-level-order-traversal Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * python의 len(queue)는 반복 시작 전에 계산된 값, 즉 고정된 횟수만큼 반복
3
+ * JS의 queue.length는 반복마다 실시간으로 다시 계산하므로 고정 사이즈 size 변수 사용
4
+ */
5
+
6
+ /**
7
+ * Definition for a binary tree node.
8
+ */
9
+ class TreeNode {
10
+ val : number ;
11
+ left : TreeNode | null ;
12
+ right : TreeNode | null ;
13
+ constructor ( val ?: number , left ?: TreeNode | null , right ?: TreeNode | null ) {
14
+ this . val = val === undefined ? 0 : val ;
15
+ this . left = left === undefined ? null : left ;
16
+ this . right = right === undefined ? null : right ;
17
+ }
18
+ }
19
+
20
+ function levelOrder ( root : TreeNode | null ) : number [ ] [ ] {
21
+ if ( ! root ) return [ ] ;
22
+
23
+ const queue : TreeNode [ ] = [ root ] ;
24
+ const output : number [ ] [ ] = [ ] ;
25
+
26
+ while ( queue . length > 0 ) {
27
+ const level : number [ ] = [ ] ;
28
+ for ( let node of queue ) {
29
+ level . push ( node . val ) ;
30
+ }
31
+ output . push ( level ) ;
32
+ const size = queue . length ;
33
+
34
+ for ( let i = 0 ; i < size ; i ++ ) {
35
+ const node = queue . shift ( ) ;
36
+ if ( node && node . left ) {
37
+ queue . push ( node . left ) ;
38
+ }
39
+ if ( node && node . right ) {
40
+ queue . push ( node . right ) ;
41
+ }
42
+ }
43
+ }
44
+ return output ;
45
+ }
You can’t perform that action at this time.
0 commit comments