首先是DFS
let depth1 = (node,nodeList = [])=>{
//node不能为null
if(node != null){
//添加节点
nodeList.push(node);
//拿到children
let children = node.children ||[];
//--for循环时横向,depth1是纵向--
for(let i = 0;i<children.length;i++){
//将子节点的和当前的nodeList传进去
depth1(children[i],nodeList);
}
}
return nodeList;
}
然后是BFS
let breadth = (node)=>{
let nodes = [];
let stack = [];
if(node){
stack.push(node);
//如果stack里边有值
while(stack.length){
//从一行里边一个个拿出来children进行下一行
let item = stack.shift();
nodes.push(item);
//拿到children,横向的往栈里边加
let children = item.children || [];
//然后再横向添加一行
for(let i = 0; i<children.length;i++){
stack.push(children[i]);
}
}
}
return nodes;
}