Skip to content

Commit fcbf0df

Browse files
committed
Merge pull request soapyigu#3 from soapyigu/Tree
[Tree] add solutions to Binary Tree Level Order Traversal and Binary …
2 parents a6e6c02 + f7f7188 commit fcbf0df

File tree

2 files changed

+105
-0
lines changed

2 files changed

+105
-0
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
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+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
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+
}

0 commit comments

Comments
 (0)