C# 试图从子控件列表中高效地查找公共父控件
我有一个控件,它可能包含相同类型的子控件。这些控件已链接在一起,以形成树结构 现在,给定此树中存在的X个控件的列表,我希望找到列表中所有控件中最接近的公共父控件。我不知道我的子控件在树中的位置 我非常愿意对这个问题做一些思考,但我只能假设它已经得到了最佳解决。有人知道我在哪里可以找到这个算法吗?如果没有,建议的方法或阅读C# 试图从子控件列表中高效地查找公共父控件,c#,algorithm,C#,Algorithm,我有一个控件,它可能包含相同类型的子控件。这些控件已链接在一起,以形成树结构 现在,给定此树中存在的X个控件的列表,我希望找到列表中所有控件中最接近的公共父控件。我不知道我的子控件在树中的位置 我非常愿意对这个问题做一些思考,但我只能假设它已经得到了最佳解决。有人知道我在哪里可以找到这个算法吗?如果没有,建议的方法或阅读 维基百科有几篇关于这个问题的文章: 一般理论: 一些实现:由于Tarjan的离线最不常见祖先处于离线状态,您可能希望通过另一种途径解决问题。使用bredth-first或dep
维基百科有几篇关于这个问题的文章: 一般理论:
一些实现:由于Tarjan的离线最不常见祖先处于离线状态,您可能希望通过另一种途径解决问题。使用bredth-first或depth-first搜索,在搜索列表中查找每个项目的路径。然后,您可以使用这些路径来确定最低的公共祖先 psuedo代码类似于:
很明显,有一些极端情况。如果搜索列表只有一项,则它是最不常见的祖先。同样,如果比较路径并到达节点本身,则它是共同的祖先。听起来像是面板中的面板,然后旁边的列表框显示每个面板的名称。类似的事情?是的,差不多我已经上传了一个IMG到最初的帖子中,把我的问题形象化。希望我能+10。这是一个很棒的小拼图游戏。好像以前有人问过:)嘿,谢谢!我没看到它被贴了。我应该把这个标记为重复的吗