n元树查找子节点最多的Javascript算法
我一直在为这个问题寻找一个基本的javascript算法,但找不到,也无法从头开始创建它 例如,他下面有最多直接子节点和间接子节点的节点。 因此,对于下面的数据结构,我希望返回节点“12”,因为它比节点“11”有更多的死者n元树查找子节点最多的Javascript算法,javascript,algorithm,tree,Javascript,Algorithm,Tree,我一直在为这个问题寻找一个基本的javascript算法,但找不到,也无法从头开始创建它 例如,他下面有最多直接子节点和间接子节点的节点。 因此,对于下面的数据结构,我希望返回节点“12”,因为它比节点“11”有更多的死者 tree = { "id": 1, "children": [ { "id": 11, "children": [ { &q
tree = {
"id": 1,
"children": [
{
"id": 11,
"children": [
{
"id": 111,
"children": []
},
{
"id": 112,
"children": [
{
"id": 1121,
"children": []
},
{
"id": 1122,
"children": []
}
]
}
]
},
{
"id": 12,
"children": [
{
"id": 121,
"children": []
},
{
"id": 122,
"children": [
{
"id": 8888,
"children": []
},
{
"id": 5555,
"children": [
{
"id": 6666,
"children": []
},
{
"id": 121212,
"children": []
}
]
}
]
}
]
}
]
};
非常感谢您的帮助,因为我被难住了。您可以为每个根子级映射dept,并通过使用子级最多的一个来减少数组
const
getC=({children})=>children?.reduce((和,节点)=>sum+getC(节点),1)| 1,
findNodeWithMostChildren=node=>node.children
.map((节点)=>[node,getC(节点)])
.减少((a,b)=>b[1]>a[1]?b:a)
[0],
tree={id:1,children:[{id:11,children:[{id:111,children:[]},{id:1122,children:[]}},{id:12,children:[{id:121,children:[]},{id:122,children:[{id:8888,children:[]},{id:5555,children id:6666,children:[]},{id:121212,children:[]}};
console.log(findNodeWithMostChildren(tree))代码>
.as控制台包装{max height:100%!important;top:0;}
取决于树表示。最简单-邻接列表中的最大值,通常为-dfs。您尝试过什么吗?图像很好,但您的树数据结构是什么样的?解决方案在很大程度上取决于该结构…@trincot它是一个层次结构,让我们称之为管理器,大多数员工请明确指定实现的数据结构是什么。“层次结构”仍然很模糊,不能告诉我们您的数据结构是什么。它返回的是节点上具有大多数子节点的子节点的数量,而不是节点对象(或其id)。谢谢,这可能更符合OP的要求,尽管我仍然认为他们的问题不清楚(应该包括实际的数据结构,而不是图片)。顺便说一句,我不希望节点
参数为空,因此没有理由使用?。
-只需节点.children???[]
(如果保证节点具有空数组,则即使没有?[]
)应该suffice@NinaScholz这也适用于间接后代吗?你说的间接后代是什么意思?