如何找到树的深度

时间:2017-11-30 11:45:14

标签: algorithm recursion

我的类可以嵌套相同的类实例:

class SomeClass
{
    List<SomeClass> SomeClasses;
}

而且......我需要知道链Parent - Children中的最高金额是多少。

它是这样的: enter image description here

我对此很困惑,所以我甚至不知道如何开始这样做。最有可能的是,没有递归就无法完成。

1 个答案:

答案 0 :(得分:2)

假设任何SomeClass实例形成一棵树,也许你正在寻找树的深度。如果是这种情况,您确实会使用递归:编写一个接受SomeClass的函数,并返回1加上通过将自身应用于SomeClasses列表而形成的列表的最大值。

这里举例来说是JS中的一个实现:

const depth = ({ things }) => 1 + Math.max(0, ...things.map(depth))

depth({
  things: [
    {
      things: [
        {
          things: []
        },
        {
          things: [
            {
              things: []
            }
          ]
        }
      ]
    }
  ]
});

// 4