n元树查找子节点最多的Javascript算法

n元树查找子节点最多的Javascript算法,javascript,algorithm,tree,Javascript,Algorithm,Tree,我一直在为这个问题寻找一个基本的javascript算法,但找不到,也无法从头开始创建它 例如,他下面有最多直接子节点和间接子节点的节点。 因此,对于下面的数据结构,我希望返回节点“12”,因为它比节点“11”有更多的死者 tree = { "id": 1, "children": [ { "id": 11, "children": [ { &q

我一直在为这个问题寻找一个基本的javascript算法,但找不到,也无法从头开始创建它

例如,他下面有最多直接子节点和间接子节点的节点。 因此,对于下面的数据结构,我希望返回节点“12”,因为它比节点“11”有更多的死者

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这也适用于间接后代吗?你说的间接后代是什么意思?