給定一個級別格式的數(shù)組,它們的直接子級存儲在一個連續(xù)的數(shù)組中,返回一個 n 叉樹給定輸入格式:[{'name':'a', 'level': -1}, {'name':'b', 'level': 0}, {'name':'c', 'level': 1}, {'name':'d', 'level': 2}, {'name':'e', 'level': 0}, {'name':'f', 'level': 1}, {'name':'g', 'level': 0}];預期輸出應采用以下格式:[ { name:"a", level:-1, children: [ { name:"b", level:0, children: [ { name:"c", level:1, children: [ { name:"d", level:2, children: [ ] } ] } ] } ], }, { name:"e", level:1, children: [ { name:"f", level:2, children: [ ] } ] }, { name:"g", level:2, children: [ ] }]我嘗試實現(xiàn)的遞歸解決方案失敗了以上代碼返回function treeTraversal(arr, index) { if (arr === null || arr.length === 0 || index === arr.length) { return; } let result = []; let children = []; if (arr[index - 1].level + 1 === arr[index].level) { children.push(arr[index]); console.log(children); treeTraversal(arr, index + 1); } arr[index - 1].children = children; result.push(arr[index - 1]); return result;}const arr = [{ 'name': 'a', 'level': -1 }, { 'name': 'b', 'level': 0 }, { 'name': 'c', 'level': 1 }, { 'name': 'd', 'level': 2 }, { 'name': 'e', 'level': 0 }, { 'name': 'f', 'level': 1 }, { 'name': 'g', 'level': 0 }];console.log(treeTraversal(arr, 1));意想不到的結(jié)果。請讓我知道上面的代碼有什么問題
將帶有級別信息的平面數(shù)組重新排列成帶有子節(jié)點的 n 叉樹
青春有我
2022-12-18 16:33:48