Hashed array tree

Its primary objective is to reduce the amount of element copying due to automatic array resizing operations, and to improve memory usage patterns.

This ensures O(1) amortized operations at a cost of O(n) wasted space, as the enlarged array is filled to the half of its new capacity.

When a hashed array tree is full, its directory and leaves must be restructured to twice their prior size to accommodate additional append operations.

Further optimizations include adding new leaves without resizing while growing the directory array as needed, possibly through geometric expansion.

This will eliminate the need for data copying completely at the cost of making the wasted space be O(n), with a small constant, and only performing restructuring when a set threshold overhead is reached.

A full hashed array tree with 16 elements