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