如果每个节点是其下所有节点的权重之和,则在树中查找最大权重节点。

时间:2013-10-05 10:11:06

标签: algorithm binary-tree

对于exa,这是树。

            10
     12           -1
  5       1     1     -2
2   3  10   -9

如何找到具有最大值的节点?

2 个答案:

答案 0 :(得分:1)

鉴于上述问题,您需要遍历整个树。见下面的证据。

遍历整个树应该是一个相当简单的过程。

证明我们需要遍历整棵树:

假设我们能够在不遍历整个树的情况下识别最大值所在的树的哪一侧。

给定左侧最大节点的树。将此最大值称为x

选择右侧的一个叶节点。添加2个孩子:x+1-x-1

x+1-x-1 = 0开始,添加它们不会改变我们添加它的叶子的总和,也不会改变树中任何其他节点的总和。

由于这可以添加到树中的任何叶子,并且它不会影响总和,我们需要遍历整个树以查明是否发生在任何地方。

因此,我们假设我们可以在不遍历整个树的情况下识别最大值所在的树的哪一侧是不正确的。

因此我们需要遍历整个树。

答案 1 :(得分:0)

在一般情况下,您需要遍历整个树。如果树中的值不受约束(例如,所有非负值,但在您的示例中有负值),则节点中的值不会告诉您其下面的各个值。