算法題目9:分散節點轉成樹

【題目】:
//A轉化成B
const A = [{id:2, parentId: 1},{id: 1}, {id: 3, parentId: 2}, {id: 5, parentId: 4},{id: 4}]
const B = [{id: 1, child: [{id: 2, parentId: 1, child: [{ id: 3, parentId: 2}]}]}, {id: 4, child: [{id: 5, parentId: 4}]}]

【具體實現】:

function convert(A) {
    let nodes = {}
    let AClone = JSON.parse(JSON.stringify(A))
    for (let node of AClone) {
        nodes[node.id] = node
    }
    
    for (let node of AClone) {
        if (node.parentId) {
            if (!nodes[node.parentId]['child']) {
                nodes[node.parentId]['child']=[]
            }
            nodes[node.parentId].child.push(node)
        }
    }
    
    let B = []
    for (let i in nodes) {
        if (!nodes[i].parentId) {
            B.push(nodes[i])
        }
    }
    return B
}

const A = [{id:2, parentId: 1},{id: 1},  {id: 3, parentId: 2}, {id: 5, parentId: 4},{id: 4}]

let result = convert(A)
console.log(JSON.stringify(result,undefined, 2))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章