-
-
Notifications
You must be signed in to change notification settings - Fork 155
/
Copy pathlevelOrderTraversal.js
48 lines (41 loc) · 1.09 KB
/
levelOrderTraversal.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//BFS: TC: O(n) SC: O(n)
function levelOrder(root) {
let traversal = [];
let queue = [];
queue.push(root);
while(queue.length) {
let len = queue.length;
let currLevel = [];
while(len >0){
let node = queue.shift();
if(node != null) {
currLevel.push(node.value);
if(node.left !== null) queue.push(node.left);
if(node.right !== null) queue.push(node.right);
}
len--;
}
if(currLevel.length >0) {
traversal.push(currLevel);
}
}
return traversal;
}
class TreeNode {
constructor(value) {
this.left = null;
this.right = null;
this.value = value;
}
}
let root1 = new TreeNode(1);
root1.left = new TreeNode(2);
root1.right = new TreeNode(3);
root1.left.left = new TreeNode(4);
root1.left.right = new TreeNode(5);
root1.right.left = new TreeNode(6);
root1.right.right = new TreeNode(7);
let root2 = new TreeNode(3);
console.log(levelOrder(root1));
console.log(levelOrder(root2));
console.log(levelOrder(null));