当计算树的直径时,为什么单独计算高度是不够的

时间:2017-02-26 18:47:07

标签: algorithm recursion tree binary-tree

在查找树的直径时,我们会查看以下内容的最大值:

1:左子树的直径

2:右子树的直径

3:左子树的高度+右子树的高度+ 1。

为什么这三个是必要的?为什么3.单独是不够的。让我们看一个简单的例如3节点树和2节点树。仅在前3点中给出1 + 1 + 1 = 3。 而在后一种情况下,第三点单独给出0 + 1 + 1 = 2。

在这种情况下,为什么我们需要找到最多三个。 Plz解释

1 个答案:

答案 0 :(得分:2)

考虑以下树:

         [A]
        /
      [B]
     /   \
  [C]     [D]
  /         \
[E]         [F]

A左子树的高度为3; A的右子树的高度为0.因此条件3给出了3 + 0 + 1 = 4。

但是树的直径是5:EF之间路径上的节点是ECB,{{ 1}},D

正如the page you linked to所解释的那样,条件3仅适用于通过树根的路径。如果两个叶子之间的最长路径没有通过根,则它属于条件1或2.该页面上的第一个图表甚至显示了一个示例:

tree diagram

右树的直径为9,但条件3仅给出5 + 2 + 1 = 8。