Tree 树问题,以查找每个级别上给定数量的节点的直径

Tree 树问题,以查找每个级别上给定数量的节点的直径,tree,Tree,假设在树的第一级始终存在根节点。您将获得一个数组计数,其中计数[i]表示第i级上存在的节点数。我们需要输出此树可能的最大直径(最长路径中的边数)注意:使用一些测试用例进行测试。 给定:数组中每个级别(1到n-1)的节点数,其中级别从0开始。示例-[1,2,2]。 级别\节点-在每个级别都有节点的阵列。 返回-最大直径 必须以创建最大直径的方式创建树 树的直径是树中从一个节点到另一个节点的最长路径 只要级别_节点[i]为1,就必须递归地解决这个问题。将返回两个值。一个值是当前根节点的最大直径长度,

假设在树的第一级始终存在根节点。您将获得一个数组计数,其中计数[i]表示第i级上存在的节点数。我们需要输出此树可能的最大直径(最长路径中的边数)

注意:使用一些测试用例进行测试。
给定:数组中每个级别(1到n-1)的节点数,其中级别从0开始。示例-[1,2,2]。
级别\节点-在每个级别都有节点的阵列。
返回-最大直径

必须以创建最大直径的方式创建树

树的直径是树中从一个节点到另一个节点的最长路径

只要级别_节点[i]为1,就必须递归地解决这个问题。将返回两个值。一个值是当前根节点的最大直径长度,另一个值是单路径长度。 比如说-

    a
   / \
  b   c
 /
d
这里对于根节点“a”,直径长度为3(d-b-a-c,3条边),单个最大路径长度为dba(d-b-a,2条边)

请查看代码(python),如果有任何不清楚的地方,请告诉我

def get_max_diameters(i, level_nodes):
    if i >= len(level_nodes):
        return 0, 0
    max_diam_len = 0
    while i < len(level_nodes) and level_nodes[i] > 1:
        max_diam_len += 2 
        i += 1
    path_len = max_diam_len // 2
    if i < len(level_nodes):
        # Whenever encountered a level nodes with value 1, recurse and find diameter of current root node.
        i_node_diam, i_path_len = get_max_diameters(i + 1, level_nodes)
        i_path_len += 1
        return max(i_node_diam, i_path_len + max_diam_len), i_path_len + path_len
    return max(max_diam_len, path_len), path_len
def get_max_直径(i级节点):
如果i>=len(级别节点):
返回0,0
最大直径长度=0
而i1:
最大直径长度+=2
i+=1
路径长度=最大直径长度//2
如果i
我认为您应该添加一些细节:您使用的是什么语言,您没有尝试过什么,出了什么问题。这可能也会有所帮助:CPP是我使用的语言,我尝试过2*max_级别的方法,但我在评论中没有具体说明。我的意思是你应该把问题写得更好。包括有意义的全部细节。描述你尝试过什么,为什么它不是你所需要的。下面是一个可以帮助你提出一个更好的问题的例子。