无极树的组建与拆分
###无极树的组建与拆分
所谓无极树,个人理解是一种无限深/无限广的Object数据类型,如下所示,可能无限深,也可能无限长
1 | let tree = { |
问题1:
将此无极树,拆分为一个一维数组,每个项都有自己的name和parent,代表他的父级
思路,递归处理tree,如果包含child数组,且数组长度大于0,则递归执行makeArr方法,否则推入数组,代码如下;
1 | let arr = []; |
问题2
将一个包含name与parent的数组(问题1的结果),转化成一个无极树;
思路,将数组解为一个队列,做一个while循环,每次对数组的第一个项进行处理,符合条件的,插入tree对应位置,并从数组移出此项,不符合条件的,放入数组最后一项,代码如下;
1 | let arr = [{"name":"d","parent":"b"},{"name":"e","parent":"b"},{"name":"f","parent":"b"},{"name":"h","parent":"g"},{"name":"j","parent":"i"},{"name":"l","parent":"k"},{"name":"m","parent":"k"},{"name":"k","parent":"i"},{"name":"i","parent":"g"},{"name":"g","parent":"b"},{"name":"b","parent":"a"},{"name":"c","parent":"a"},{"name":"a","parent":null}] |
原文作者: IT梅
原文链接: http://www.meixiaohan.com/2019/07/21/无极树组建与拆分/
版权声明: 转载请注明出处(必须保留原文作者署名原文链接)