File tree Expand file tree Collapse file tree 1 file changed +42
-0
lines changed
binary-tree-level-order-traversal Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change
1
+ class TreeNode {
2
+ val : number
3
+ left : TreeNode | null
4
+ right : TreeNode | null
5
+ constructor ( val ?: number , left ?: TreeNode | null , right ?: TreeNode | null ) {
6
+ this . val = ( val === undefined ? 0 : val )
7
+ this . left = ( left === undefined ? null : left )
8
+ this . right = ( right === undefined ? null : right )
9
+ }
10
+ }
11
+
12
+
13
+ // TC: O(n)
14
+ // SC: O(n)
15
+ function levelOrder ( root : TreeNode | null ) : number [ ] [ ] {
16
+ if ( ! root ) return [ ] ;
17
+
18
+ const result : number [ ] [ ] = [ ] ;
19
+ const queue : TreeNode [ ] = [ root ] ;
20
+
21
+ while ( queue . length > 0 ) {
22
+ const values : number [ ] = [ ] ;
23
+ const level = queue . length ;
24
+
25
+ for ( let i = 0 ; i < level ; i ++ ) {
26
+ const node = queue . shift ( ) ! ;
27
+ values . push ( node . val ) ;
28
+
29
+ if ( node . left ) {
30
+ queue . push ( node . left ) ;
31
+ }
32
+
33
+ if ( node . right ) {
34
+ queue . push ( node . right ) ;
35
+ }
36
+ }
37
+
38
+ result . push ( values ) ;
39
+ }
40
+
41
+ return result ;
42
+ }
You can’t perform that action at this time.
0 commit comments