1 回答
TA贡献1780条经验 获得超3个赞
经典的深度优先搜索,只有一个数据么,如果是的话,可以预处理下:
let ans = {}
function getMaxDepthByKey(treeData) {
for (let item of treeData) {
getDepth(item)
}
function getDepth(obj) {
if (obj.hasOwnProperty('children')) {
ans[obj.key] = 0
for (let item of obj.children)
ans[obj.key] = Math.max(ans[obj.key], getDepth(item) + 1)
return ans[obj.key]
} else {
ans[obj.key] = 0
return 0
}
}
}
getMaxDepthByKey(treeData)
console.log(ans['tree1']) // 3
console.log(ans['tree2']) // 2
console.log(ans['tree3']) // 1
console.log(ans['tree4']) // 0
console.log(ans['tree5']) // 0
console.log(ans['tree6']) // 0
console.log(ans['tree7']) // 0
但是题主对调用方式做了固定,稍微改下即可
添加回答
举报