@ninijia 在 Leetcode每日一题练习 ------ 3203. 合并两棵树后的最小直径 中发帖
从Leetcode 每日一题练习继续讨论:
3203. 合并两棵树后的最小直径
3203. Find Minimum Diameter After Merging Two Trees
题解
本题的总体思路其实比较容易想到,要找到的是两棵树上的两个节点,使得将这两个节点连接后得到的新树的直径最短。原始的两棵树是固定的,若要在连接后直径最短,则用于连接的节点在原来的树上到其他任何一个节点距离的最大值应该尽可能小,问题在于这样的节点应该如何确定。
树的直径是树中任意两节点之间最长的简单路径,直径是整棵树中最长的路径,那么要想使得最大值尽可能小,就应该找直径的中点,对于直径是偶数,中点只有一个,直径是奇数则任选两个中点中的一个即可。其他节点都会存在到直径的两个端点的更长距离,因为其他节点到端点都要先经过中点,再到端点。
确定树的直径使用两次dfs即可,第一次dfs确定直径的一个端点,第二...