在查找树的直径时,我们会查看以下内容的最大值:
1:左子树的直径
2:右子树的直径
3:左子树的高度+右子树的高度+ 1。
为什么这三个是必要的?为什么3.单独是不够的。让我们看一个简单的例如3节点树和2节点树。仅在前3点中给出1 + 1 + 1 = 3。 而在后一种情况下,第三点单独给出0 + 1 + 1 = 2。
在这种情况下,为什么我们需要找到最多三个。 Plz解释
答案 0 :(得分:2)
考虑以下树:
[A]
/
[B]
/ \
[C] [D]
/ \
[E] [F]
A
左子树的高度为3; A
的右子树的高度为0.因此条件3给出了3 + 0 + 1 = 4。
但是树的直径是5:E
和F
之间路径上的节点是E
,C
,B
,{{ 1}},D
。
正如the page you linked to所解释的那样,条件3仅适用于通过树根的路径。如果两个叶子之间的最长路径没有通过根,则它属于条件1或2.该页面上的第一个图表甚至显示了一个示例:
右树的直径为9,但条件3仅给出5 + 2 + 1 = 8。