File tree Expand file tree Collapse file tree 2 files changed +105
-0
lines changed Expand file tree Collapse file tree 2 files changed +105
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * Question Link: https://leetcode.com/problems/binary-tree-level-order-traversal/
3
+ * Primary idea: use a queue to help hold TreeNode, and for each level add a new Int array
4
+ * Time Complexity: O(n), Space Complexity: O(n)
5
+ *
6
+ * Definition for a binary tree node.
7
+ * public class TreeNode {
8
+ * public var val: Int
9
+ * public var left: TreeNode?
10
+ * public var right: TreeNode?
11
+ * public init(_ val: Int) {
12
+ * self.val = val
13
+ * self.left = nil
14
+ * self.right = nil
15
+ * }
16
+ * }
17
+ */
18
+
19
+ class BinaryTreeLevelOrderTraversal {
20
+ func levelOrder( root: TreeNode ? ) -> [ [ Int ] ] {
21
+ var res : [ [ Int ] ] = [ ]
22
+ var queue : [ TreeNode ] = [ ]
23
+
24
+ if root == nil {
25
+ return res
26
+ }
27
+
28
+ queue. append ( root!)
29
+
30
+ while queue. count > 0 {
31
+ var size : Int = queue. count
32
+ var level : [ Int ] = [ ]
33
+
34
+ for i in 1 ... size {
35
+ let node : TreeNode = queue [ 0 ]
36
+ queue. removeAtIndex ( 0 )
37
+
38
+ level. append ( node. val)
39
+ if let left = node. left {
40
+ queue. append ( left)
41
+ }
42
+ if let right = node. right {
43
+ queue. append ( right)
44
+ }
45
+ }
46
+ res. append ( level)
47
+ }
48
+
49
+ return res
50
+ }
51
+ }
Original file line number Diff line number Diff line change
1
+ /**
2
+ * Question Link: https://leetcode.com/problems/binary-tree-level-order-traversal-ii/
3
+ * Primary idea: use a queue to help hold TreeNode, and for each level add a new Int array
4
+ *
5
+ * Note: use method insertAtIndex to add each level to final result
6
+ *
7
+ * Time Complexity: O(n), Space Complexity: O(n)
8
+ *
9
+ * Definition for a binary tree node.
10
+ * public class TreeNode {
11
+ * public var val: Int
12
+ * public var left: TreeNode?
13
+ * public var right: TreeNode?
14
+ * public init(_ val: Int) {
15
+ * self.val = val
16
+ * self.left = nil
17
+ * self.right = nil
18
+ * }
19
+ * }
20
+ */
21
+
22
+ class BinaryTreeLevelOrderTraversalII {
23
+ func levelOrderBottom( root: TreeNode ? ) -> [ [ Int ] ] {
24
+ var res : [ [ Int ] ] = [ ]
25
+ var queue : [ TreeNode ] = [ ]
26
+
27
+ if root == nil {
28
+ return res
29
+ }
30
+
31
+ queue. append ( root!)
32
+
33
+ while queue. count > 0 {
34
+ var size : Int = queue. count
35
+ var level : [ Int ] = [ ]
36
+
37
+ for i in 1 ... size {
38
+ let node : TreeNode = queue [ 0 ]
39
+ queue. removeAtIndex ( 0 )
40
+
41
+ level. append ( node. val)
42
+ if let left = node. left {
43
+ queue. append ( left)
44
+ }
45
+ if let right = node. right {
46
+ queue. append ( right)
47
+ }
48
+ }
49
+ res. insert ( level, atIndex: 0 )
50
+ }
51
+
52
+ return res
53
+ }
54
+ }
You can’t perform that action at this time.
0 commit comments