-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtreeByLevel.js
61 lines (49 loc) · 1.2 KB
/
treeByLevel.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
49
50
51
52
53
54
55
56
57
58
59
60
61
//https://www.youtube.com/watch?v=P_YMAJWEK3Q
function printTree(tree){
let queue = []
console.log(tree.value)
queue.push(tree.left)
queue.push(tree.right)
while(queue[0] != null){
const tmp = queue.shift()
console.log(tmp.value)
queue.push(tmp.left)
queue.push(tmp.right)
}
}
function printTreeByLvl(root){
let queue = []
queue.push(root)
let str = ''
while(queue.length > 0){
let tmp
let newQueue = []
while(tmp = queue.shift()){
str += tmp.value
if(tmp.left)
newQueue.push(tmp.left)
if(tmp.right)
newQueue.push(tmp.right)
}
queue=newQueue
str+='\n'
}
return str
}
//Test
class Node {
constructor(value, left, right){
this.value = value
this.left = left
this.right = right
}
}
const node5 = new Node(5,null,null)
const node4 = new Node(4,null,null)
const node3 = new Node(3,null,null)
const node2 = new Node(2, node5, null)
const node1 = new Node(1, node3, node4)
const root = new Node(0, node1, node2)
console.log(printTree(root))
console.log(' ------- ')
console.log(printTreeByLvl(root))