查找二叉树的多个中心点

时间:2019-02-17 05:57:07

标签: algorithm binary-tree

(我一直很难找到与此类似的问题,因此,如果对此类型的问题有更好的名称,请告诉我。)

我一直在尝试寻找二叉树的多个中心点的问题。我的意思是,如果我有一棵具有n个顶点的二叉树,我想在树S = [v1,v2,...,vk]中找到一组顶点,使得每个顶点之间的最大距离(跳数)树中的顶点和S中最接近它的顶点已最小化。另外,最接近每个顶点的S中的顶点应该是其祖先。因此,如果树中的顶点在S中没有祖代,则其距离值将是无穷大。

一个简单的例子:

一棵树的根节点1分为两个节点2和3,节点3进一步分为4和5。如果我为S选择k = 2个顶点,则最佳解将为S = [1,3]总距离成本为3。次优解为S = [1,2],距离成本为5。如果S = [2,3],则距离为无穷大。

我认为树的根应该始终在集合S中,否则距离为inf。但是我不确定如何确定应该如何选择S的其他元素。

我在考虑也许应该做一个递归尝试,即从根开始并在两个子节点中的每个节点上进行递归,并跟踪每个父节点与它下面所有节点之间的总距离。但是我不知道从那里去哪里。

有关如何完成此类任务的任何提示?

0 个答案:

没有答案