查找树中的最大节点数

时间:2014-10-21 20:18:44

标签: algorithm collections tree children iterable

首先,这是一个家庭作业问题,但我不是要求解决方案。 我有一些关于从哪里开始的想法,但我也想提出一些建议。

这是一个问题: 写一个算法max-degree(r),它接收树的根r作为输入,然后输出 树中节点的最大程度。

我一直在尝试使用Tree ADT的children()方法,但此方法返回一个可迭代的集合。我甚至不知道可迭代集合是什么或看起来像什么,所以如果有人能给出一个在树对象上使用的子()的例子,那将是非常有帮助的。另外,如果您认为我通过尝试使用children()方法对此问题采取了错误的方法,请说出来。

1 个答案:

答案 0 :(得分:0)

您应该检查所有孩子,并取degree的最大值。您可以像在DFS中一样浏览树(此处,BFS需要更多内存)。在pesudo-code中它看起来像:

def max-degree(vertex root)
    solution = local_degree
    foreach(vertex x : root.children())
        solution = max(solution, max-degree(x))
    return solution

特殊情况是树的根,如果你不想考虑他的学位。但它很容易解决。