树的结构如下:
先序(深度搜索遍历DFS):先顶点,再左边节点,接着右边节点
前序结果:ABDEHICFG
中序:先左边节点,再顶点,最后右边节点
中序结果:DBHEIAFCG
后序:先左边节点,然后右边节点,最后为顶点
后序结果:DHIEBFGCA
树的三只序遍历结果:
前序中序后序主要是记住顶点的顺序,顶点先遍历的是前序,顶点在中间遍历的是中序,顶点最后遍历的是后序,无论哪种序都是先遍历左节点再遍历右节点。
树的层级遍历(广度搜索遍历)是按照层级遍历,即先第一层再第二层第三层。。。
层级遍历结果:ABCDEFGHI
深度搜索遍历(DFS)代码实现:
function myDFS(node){
let stack = [], nodeList = [];
if(node){
stack.push(node);
while(stack.length){
let item = stack.pop();
if(item){
nodeList.push(item);
let children = item.children;
if(children){
for(let i = children.length - 1; i >= 0; i--){
stack.push(children[i]);
}
}
}
}
}
return nodeList;
}
广度搜索遍历(BFS)代码实现:
function myBFS(node){
let queue = [], nodeList = [];
if(node){
queue.push(node);
while(queue.length){
let item = queue.shift();
if(item){
nodeList.push(item);
let children = item.children;
if(children){
for(let i = 0, len = children.length; i < len; i++){
queue.push(children[i]);
}
}
}
}
}
return nodeList;
}