【问题标题】:how to find maximum path sum between any two nodes in a bst?如何找到bst中任意两个节点之间的最大路径和?
【发布时间】:2015-06-28 17:31:28
【问题描述】:

我们如何找到二叉搜索树中任意两个元素之间的最大可能路径和? 我不只是在谈论任何两个叶节点。这个问题包括所有节点。 路径总和是指路径中所有数据元素的总和。

【问题讨论】:

  • 你能描述一下路径吗?你的意思是“父母链”吗?
  • 路径表示一个节点到另一个节点的距离。而路径总和是指路径中数据元素的总和。
  • 也许我误解了这个问题,但路径是否只需要包含唯一节点,因为如果不是,答案将是无限的。如果它是唯一的,最大值不等于最小值吗?
  • 是的,路径只需要包含唯一节点。对于任何两个节点,我们将只有一条路径。在这里,我们需要在 bst 中找到此类唯一路径的最大值。

标签: tree max binary-search-tree nodes


【解决方案1】:

使用伪代码:

Set maxSum = MINVALUE

TreeMaxSum (tree)
   maxLeft = TreeMaxSum(tree->left)
   maxRight = TreeMaxSum(tree->right)
   maxSum = max(maxSum, maxLeft+maxRight+tree->value)
   return max(maxLeft, maxRight) + tree->value

TreeMaxSum(tree)

当然,您需要处理常见的边缘情况和“空叶”值...

【讨论】:

    猜你喜欢
    • 2011-03-08
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    相关资源
    最近更新 更多