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