相距最远的两个节点,如果不经过当前树的根节点,也必定经过以当前树中某节点为根的树而连接在一起。非正式地讲,任何一条路径都是经过“根节点”的。
所以可以用动态规划的方法,自底向上为每个节点分别计算其左子树到“根节点”的最大距离,右子树到“根节点”的最大距离。然后,比较经过当前“根节点”的路径距离与当前的最远距离。
树结构代码:
寻找树种节点间的最大距离
示例测试代码
相距最远的两个节点,如果不经过当前树的根节点,也必定经过以当前树中某节点为根的树而连接在一起。非正式地讲,任何一条路径都是经过“根节点”的。
所以可以用动态规划的方法,自底向上为每个节点分别计算其左子树到“根节点”的最大距离,右子树到“根节点”的最大距离。然后,比较经过当前“根节点”的路径距离与当前的最远距离。
树结构代码:
寻找树种节点间的最大距离
示例测试代码