File tree Expand file tree Collapse file tree 1 file changed +52
-0
lines changed
binary-tree-level-order-traversal Expand file tree Collapse file tree 1 file changed +52
-0
lines changed Original file line number Diff line number Diff line change
1
+ /*
2
+ 풀이
3
+ - queue 자료구조를 사용하여 풀이합니다
4
+ Big O
5
+ - N: 노드의 개수
6
+ - Time complexity: O(N)
7
+ - 모든 노드를 조회합니다
8
+ - Space complexity: O(N)
9
+ - 반환 결과값인 2차원 배열 levels -> O(N)
10
+ - queue -> O(3/4 * N) = O(N)
11
+ - 한 층이 가질 수 있는 최대 노드 개수는 약 N / 2
12
+ - queue의 크기가 가장 클 때는 두 층의 노드를 가지고 있으므로 N / 2 + (N / 2) / 2 개의 노드를 갖게 됨
13
+ - level -> O(N/2) = O(N)
14
+ - - 한 층이 가질 수 있는 최대 노드 개수는 약 N / 2
15
+ */
16
+
17
+ /**
18
+ * Definition for a binary tree node.
19
+ * type TreeNode struct {
20
+ * Val int
21
+ * Left *TreeNode
22
+ * Right *TreeNode
23
+ * }
24
+ */
25
+ func levelOrder (root * TreeNode ) [][]int {
26
+ levels := make ([][]int , 0 )
27
+
28
+ if root == nil {
29
+ return levels
30
+ }
31
+
32
+ queue := make ([]* TreeNode , 0 )
33
+ queue = append (queue , root )
34
+ for len (queue ) > 0 {
35
+ k := len (queue )
36
+ level := make ([]int , k )
37
+ for i := 0 ; i < k ; i ++ {
38
+ node := queue [i ]
39
+ level [i ] = node .Val
40
+ if node .Left != nil {
41
+ queue = append (queue , node .Left )
42
+ }
43
+ if node .Right != nil {
44
+ queue = append (queue , node .Right )
45
+ }
46
+ }
47
+ queue = queue [k :]
48
+ levels = append (levels , level )
49
+ }
50
+
51
+ return levels
52
+ }
You can’t perform that action at this time.
0 commit comments