我刚刚在学习一些谷歌面试题,偶然发现了一个问题,但是我似乎无法理解。
考虑一个具有N个节点的无向树,编号从1到N。每个节点都有与之相关联的标签,这是一个整数值。不同的节点可以具有相同的标签。编写一个函数,给定长度为N的零索引数组A,其中A[j]是树中第(j + 1)个节点的标签值,以及长度为K = (N - 1) * 2的零索引数组E,其中描述了树的边缘,返回最长路径的长度,使得该路径上的所有节点具有相同的标签。长度是该路径中的边数。
例如:
A = [1, 1, 1, 2, 2] E = [1, 2, 1, 3, 2, 4, 2, 5]
此树如下所示。节点遵循标签,值的形式。
该函数应该返回2,因为最长的路径是2->1->3,这条路径上有2条边。
假设1 <= N <= 1000,并且数组A的每个元素都是范围在[1, 1000000000]之间的整数。
你认为如何分解问题以便解决?谢谢!
考虑一个具有N个节点的无向树,编号从1到N。每个节点都有与之相关联的标签,这是一个整数值。不同的节点可以具有相同的标签。编写一个函数,给定长度为N的零索引数组A,其中A[j]是树中第(j + 1)个节点的标签值,以及长度为K = (N - 1) * 2的零索引数组E,其中描述了树的边缘,返回最长路径的长度,使得该路径上的所有节点具有相同的标签。长度是该路径中的边数。
例如:
A = [1, 1, 1, 2, 2] E = [1, 2, 1, 3, 2, 4, 2, 5]
此树如下所示。节点遵循标签,值的形式。
----------1, 1
-----1, 2 1, 3
2, 4 2, 5
该函数应该返回2,因为最长的路径是2->1->3,这条路径上有2条边。
假设1 <= N <= 1000,并且数组A的每个元素都是范围在[1, 1000000000]之间的整数。
你认为如何分解问题以便解决?谢谢!