File tree 1 file changed +48
-0
lines changed
binary-tree-level-order-traversal
1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change
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
+ * μ΄μ§νΈλ¦¬ λ 벨 μν νκΈ°
16
+ * μκ³ λ¦¬μ¦ λ³΅μ‘λ
17
+ * - μκ° λ³΅μ‘λ: O(n)
18
+ * - κ³΅κ° λ³΅μ‘λ: O(n)
19
+ * @param root
20
+ */
21
+ function levelOrder ( root : TreeNode | null ) : number [ ] [ ] {
22
+ if ( ! root ) return [ ]
23
+ let result = [ ]
24
+ const queue : TreeNode [ ] = [ root ]
25
+
26
+ while ( queue . length > 0 ) {
27
+ const levelValues : number [ ] = [ ]
28
+
29
+ // νμ¬ λ 벨μ ν¬κΈ° (νμ¬ νμ μλ νμ¬ λ 벨μ μν λ
Έλμ μ) λ§νΌ μν
30
+ for ( let i = 0 ; i < queue . length ; i ++ ) {
31
+ const node = queue . shift ( ) !
32
+
33
+ // νμ¬ λ
Έλμ κ°μ νμ¬ λ 벨μ κ° λ°°μ΄μ μΆκ°
34
+ levelValues . push ( node . val )
35
+
36
+ if ( node . left ) {
37
+ queue . push ( node . left ) ;
38
+ }
39
+ if ( node . right ) {
40
+ queue . push ( node . right ) ;
41
+ }
42
+ }
43
+
44
+ result . push ( levelValues )
45
+ }
46
+
47
+ return result ;
48
+ }
You canβt perform that action at this time.
0 commit comments