我们在之前一篇文章 如何将评论数据从扁平数组结构转为树形结构 ,讲解过如何把数组结构转为树形结构。这里我们讲下,如何将树形结构转为扁平的数组结构。

这是一个多层级的树形结构,我们把它转成数组。

这里我们有两个方式来进行转换:深度优先和广度优先。即优先使用当前节点的子节点,还是优先当前节点的兄弟节点。

深度优先,即若当前节点有子节点,优先遍历子节点,直到没有子节点,才遍历其兄弟节点。

我们输出下结果:

从数组的排列顺序中,也能看到,子节点要比兄弟节点更靠前。

广度优先,即若当前节点有兄弟,优先遍历兄弟节点,有子节点时,则先存起来,等待后续的遍历。

从数组的排列顺序中,也能看到,兄弟节点要比子节点更靠前。

无论是深度优先还是广度优先,复杂度都差不多。从图片上也能看到,这里我们并没有进行特殊的处理,有几个节点的children还在,更细致的话,应该把每个节点的 children 属性去掉。