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