一道JS树状对象遍历算法题,求解?跪求!

问题描述
今天去面试,题目是对一个对象中的value属性做遍历求和,对象结构如下:
varnodes={
value:1,
children:[
{
value:2,
children:[
{
value:4,
children:[...]
},
{
value:3,
children:[...]
},
...
]
},
{
value:5,
children:[...]
},
...
]
}
我当时写的答案如下
functionsum(node){
if(node.children.length===0){
returnnode.value
}
else{
returnnode.children.reduce(
(prev,curr)=>prev+sum(curr),
node.value
)
}
}
sum(nodes)
面试官说在数据量很大的情况下,用递归的性能会很差,所以这题不能用递归,我思前想后都觉得需要用到递归,最后只能请教面试官,被他批评说现在的程序员只会拍脑袋用递归,叫我回去看看DFS和BFS算法,但我看完后依然觉得需要用到递归,很苦恼,各路大神能否帮忙解答一下?
月关宝盒
浏览 328回答 2
2回答

MMTTMM

典型的层级遍历。与按层输出二叉树的节点思路相同。varnodes={value:1,children:[{value:2,children:[{value:4,},{value:3,},]},{value:5,},]}functionsum(nodes){lets=0;letlevel=[nodes];letnextLevel=[];while(level.length>0){for(leti=0;i
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript