-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbfc-dfc.html
102 lines (97 loc) · 2.59 KB
/
bfc-dfc.html
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="parent">
<div class="children1">
<div class="children1-1">
<div class="children1-1-1">
a
</div>
</div>
<div class="children1-2">
<div class="children1-2-1">
b
</div>
</div>
<div class="children1-3">
c
</div>
</div>
<div class="children2">
<div class="children2-1">
<div class="children2-1-1">
d
</div>
</div>
<div class="children2-2">
<div class="children2-2-1">
e
</div>
</div>
<div class="children2-3">
f
</div>
</div>
<div class="children3">
<div class="children3-1">
<div class="children3-1-1">
g
</div>
</div>
<div class="children3-2">
<div class="children3-2-1">
h
</div>
</div>
<div class="children3-3">
r
</div>
</div>
</div>
<script>
let node_prent = document.querySelector('#parent')
// DFS 深度优先遍历 栈
let dfc = (node) => {
let stack = [] // 栈
let nodes = [] // 存所有节点
if (node) {
stack.push(node) // 假如有节点就存到栈中
while (stack.length) {
let item = stack.pop() // 出栈
nodes.push(item)
let children = item.children // 拿到子节点
// 每层从右往左取 取到放进stack
for (let i = children.length - 1; i >= 0; i--) {
stack.push(children[i])
}
}
}
return nodes // 所有节点返回
}
console.log(dfc(node_prent))
// 广度优先遍历 队列
// let bfs = (node)=>{
// let stack = [] // 队列
// let nodes = [] // 返回的节点
// if(node){
// stack.push(node)
// while(stack.length){
// let item = stack.shift() // 从前面去
// nodes.push(item)
// let children = item.children
// for(let i=0;i<children.length;i++){
// stack.push(children[i])
// }
// }
// }
// return nodes
// }
// console.log(bfs(node_prent))
</script>
</body>
</html>