这是一个小堆吗?

时间:2017-07-05 14:36:17

标签: data-structures tree

我想在列表中找到总和为n的所有数字对。

如果我构建一个具有属性的树,每个节点的子节点都是大于它自身的值,那么我将能够遍历它以找到总和为n的所有组合:

例如。列表[1,2,3,4]

                   1

      2            3           4

   3     4         4           

4               

这是什么类型的数据结构?

它是一个小堆,对每个节点的子节点数没有限制,允许重复吗?

1 个答案:

答案 0 :(得分:1)

您的目标号码是N。您可以保留一个包含您目前遇到的数字的哈希表,当您遇到新号码X时,您可以测试您是否在哈希表中遇到N-X

伪代码:

var encountered <- hashTable(key: integer, value: any)
var recordList <- list(value: pairs of integers)
for each element in inputList
  if encountered(N-element) then push [element, N-element] into recordList 
  push element into encountered
loop
return recordList