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

标签 algorithm binary-tree

例如,这是树。

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

如何找到最大值的节点?

最佳答案

鉴于上述问题,您需要遍历整棵树。请参阅下面的证明。

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

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

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

给定任意一棵最大节点在左边的树。称此最大值为 x

选择右侧的叶节点之一。向其中添加 2 个 child :x+1-x-1

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

因为这可以添加到树中的任何叶子,并且它不会影响总和,所以我们需要遍历整个树以找出是否在任何地方发生这种情况。

因此,我们假设无需遍历整棵树就可以确定最大值在树的哪一侧是不正确的。

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

关于algorithm - 如果每个节点都是其下所有节点的权重之和,则找到树中最大权重的节点。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19196535/

相关文章:

algorithm - 在不使用循环或条件的情况下打印字符串 X 次

algorithm - 动态规划 - 最佳断点

algorithm - 二叉树什么时候比 B 树好?

java - 我的 Java 快速排序实现有什么问题?

java - Java最长公共(public)子序列的动态规划算法

c - 我的二分搜索(在 C 语言中工作)不断出现段错误

c - 无法从以指针作为参数的函数内的主方法引用指针

c++ - 计算二叉树中的节点

算法:在数组中查找单个数字

c++ - 算法的大 O 表示法