<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>YYK</title>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<style>
* {
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<script>
const tree = {
name: 'root',
children: [
{
name: 'c1',
children: [
{
name: 'c11',
children: []
},
{
name: 'c12',
children: []
}
]
},
{
name: 'c2',
children: [
{
name: 'c21',
children: []
},
{
name: 'c22',
children: []
}
]
}
]
}
// 递归 --深度优先
function deep(tree){
let result = [];
if(tree.name){
result.push(tree.name)
}
if(tree.children){
for(let i = 0 ;i < tree.children.length ;i++){
result.push(...deep(tree.children[i]));
}
}
return result;
}
let res1 = deep(tree);
// 广度优先
function bfsFun(tree){
let result = [];
let queue = [];
queue.push(tree);
while(queue.length > 0){
const cur = queue.shift();
result.push(cur.name);
if(cur.children){
cur.children.forEach(item => {
queue.push(item);
});
}
}
return result;
}
let res2 = bfsFun(tree);
// 深度-优先
function dfsFun(){
let result = [];
let queue = [];
queue.push(tree);
while(queue.length > 0){
const cur = queue.pop();
result.push(cur.name);
if(cur.children){
cur.children.reverse().forEach(item => {
queue.push(item);
});
}
}
return result;
}
let res1_1 = dfsFun(tree);
</script>
</body>
</html>