데이터 구조, 기본적으로 맵 트리를 찾고 있는데, 각 노드의 맵에는 새로운 노드와 부모 노드 맵의 요소가 포함되어 있습니다. 여기서 맵은 STL의 맵 또는 파이썬의 dict와 같은 키와 값이있는 프로그래밍 맵을 의미합니다.
예를 들어 루트 노드가있을 수 있습니다.
root = {'car':1, 'boat':2}
부모 맵에 요소를 각각 추가하는 2 명의 자식
child1 = {'car':1, 'boat':2, 'jet':35}
child2 = {'car':1, 'boat':2, 'scooter':-5}
가능한 한 공간 효율적이기를 원합니다. 즉, 각 노드에 결과 맵의 전체 사본을 저장하고 싶지 않지만 이상적으로는 여전히 O (log N)입니다 .N은 총 수입니다. 전체 트리가 아닌 노드의 요소.
아마도 이것을 위해 사용할 수있는 스마트 해시 함수가 있다고 생각했지만 아무것도 만들 수 없었습니다.
순진한 접근 방식은 새로 추가 된 항목을 각 노드의 맵에 저장 한 다음 아무것도 발견되지 않으면 트리 위로 이동하는 것입니다. 나무 깊이에 따라 다르므로 마음에 들지 않습니다.