根据您在评论中的回答,我觉得您不妨让树的每个级别代表一个问题,而该级别节点的分支/子节点代表答案。正如 btilly 所提到的,这在技术上是一个尝试。
一个更有效(尽管不一定是空间方面)的解决方案可能涉及使用哈希表和一个哈希函数,该哈希函数作用于答案选择以创建其哈希,但我认为考虑到您的要求和不要使用 trie 是最好的方法没关系。
哦,对了:根据答案选择的布局方式,您可能会在几个级别没有任何子分支/树的特定分支上获得一系列答案;在这种情况下,您可能会将那些单一的分支部分折叠成单独的节点。http://en.wikipedia.org/wiki/Trie#Compressing_tries也可能提供一些提示。
根据您对我最初回答的回复,这是我的想法:
为问题及其答案选择保留一组节点,每个答案选择都与一个哈希表(或您希望使用的任何数据结构)相关联;由于经常使用 Python 并且习惯于Python 的set
数据结构,它被实现为一种哈希表)包含指向每个公司的指针,或者如果给定问题的给定答案将指示公司开始,则指向单个公司的指针。
当您第一次检查特定问题的答案时,并且有多家公司与该答案选择相关联时,将第一个答案的哈希表中的数据临时复制为链接列表或其他内容。随着更多问题的回答,请对照每个新答案的哈希表检查列表中的元素,并从列表中删除每个新答案的哈希表中不存在的公司。重复提问过程,直到 1) 列表中只剩下一家公司,2) 列表中没有任何公司,或 3) 您已提出所有问题。
如果是 1),那是问答者的雇主。
如果是 2),则该员工未受雇于任何公司进行检查,和/或某处存在错误。
如果是3),则留在链表中的公司是问答者可能受雇的公司。
可能有一种更有效的方法可以做到这一点,因为我的实现至少需要 580 个哈希表(每个答案一个,每个问题至少有 2 个答案),但我现在真的想不出任何东西。