【发布时间】:2013-11-12 00:04:47
【问题描述】:
我有一棵树,其中有 3 个级别。有一个根节点,根节点有3个叶子节点,所有3个叶子节点都有3个其他叶子节点。节点代表服务器。现在,我必须计算给定级别的节点深度。深度计算如下:
1) 如果服务器(节点)在任何级别和任何列“向上”,则该节点的深度为 0。
2) 如果服务器处于最后一层并且“关闭”,则该节点的深度为无穷大。
3) 对于所有其他情况,节点的深度是其叶节点的最大深度 + 1。最大深度表示其子节点中出现的多数值。
这里采用自下而上的方法,因此,根节点的深度是级别 1 的深度。级别作为程序中的输入参数。现在,我必须计算根节点的深度。
我对程序做了一些假设:
1) 查找子节点,跟随父节点的子指针。
2) 要查找给定级别中的所有节点,请从根遍历子节点直到到达该级别并列出它们。
3) 根据给定的约束分配值。
我不确定我的方法是否正确。请帮帮我。谢谢。
【问题讨论】:
-
我假设第一个约束,你的意思是“如果服务器在最后一级并且已经启动”,对吗?
-
不,对于第一个约束,无论服务器在什么级别,如果它是up,则该节点的深度为0。例如,如果该节点在级别2和列4 如果它是向上的,那么该节点的深度是 0。我编辑了这个问题。
-
我很难完全理解您在这里尝试解决的问题。您能否提供更多有关该问题的背景信息。另外,如果任何节点“关闭”,那么根节点的深度会不会是
infinity? -
我明白你的意思。最大(叶节点)是指大多数叶节点所具有的值。例如,如果有一个节点有 3 个叶节点,其值为 infinity, 1, 1。那么该节点的最大深度将为 1,因为它的两个叶节点的值为 1。然而,可能存在以下情况:根节点的值为无穷大。那样的话,整个网络都是失败的。
-
也许您最好尝试解释算法的更高级别目标,而不是您构建的约束。例如,我怀疑您想要“min”而不是“max”,问题是要找到“从根到未关闭的节点的最小距离”。
标签: c++