编程题-将数组转成树结构

213 阅读1分钟

题目

将下面的数组转成树形结构,一开始脑袋一热,以为写一课树完事,然后就直接写了一棵树,然后直接跑题gg

//[{pid:-1,id:0},{pid:0,id:1},{pid:0,id:2},{pid:2,id:3}]
//转成 
// {
//     id:0,
//     children:[
//         {
//             id:1, children:[]
//         },
//         {
//             id:2, children:[
//                 {
//                     id:3, children:[]
//                 }
//            ]
//         }
//     ]
// }

常规迭代方法

let arr1 = [{pid:-1,id:0},{pid:0,id:1},{pid:0,id:2},{pid:2,id:3}]


function putIntoTree(arr) {
  let res = [];
  if (arr.length === 0) {return;}
  for(let i = 0; i < arr.length; i++) {
    let node = {id: arr[i].id, children: []};
    res.push(node)
  }
  console.log(res);
  for (let i = 0; i < res.length; i ++) {
    for (let j = 0; j < arr.length; j ++) {
      if (arr[i].pid === res[j].id) {
        console.log('i------j',i, j)
        res[j].children.push(res[i]);
      }
    }
  }
  return res[0];
}
console.log(putIntoTree(arr1));

递归的方法继续思考