Tôi đang tìm kiếm một cấu trúc dữ liệu, về cơ bản là một cây bản đồ, trong đó bản đồ ở mỗi nút chứa một số phần tử mới, cũng như các phần tử trong bản đồ của nút cha. Theo bản đồ ở đây tôi có nghĩa là một bản đồ lập trình với các khóa và giá trị, như bản đồ trong STL hoặc dict trong python.
Ví dụ: có thể có một nút gốc:
root = {'car':1, 'boat':2}
và 2 con, mỗi con thêm một yếu tố vào bản đồ cha
child1 = {'car':1, 'boat':2, 'jet':35}
child2 = {'car':1, 'boat':2, 'scooter':-5}
Tôi muốn điều này là không gian hiệu quả nhất có thể, tức là tôi không muốn lưu trữ một bản sao hoàn chỉnh của bản đồ kết quả ở mỗi nút, nhưng lý tưởng là việc tra cứu vẫn sẽ là O (log N), N là tổng số các phần tử tại nút, không phải toàn bộ cây.
Tôi đã nghĩ có lẽ có một hàm băm thông minh mà tôi có thể sử dụng cho việc này, nhưng không thể đưa ra bất cứ điều gì.
Cách tiếp cận ngây thơ sẽ lưu trữ các mục mới được thêm vào trong bản đồ tại mỗi nút và sau đó di chuyển lên cây nếu không tìm thấy gì. Tôi không thích điều này bởi vì nó phụ thuộc vào độ sâu của cây.