I am an old Pythonista now learning C and how various data structures and types are implemented, such as binary trees and hash tables. Learning about the latter, leads me understand that the hash function servers the purpose of computing from the key the index in the array where the value is stored. I have also learned that trees may be stored as arrays. Given that arrays are said to be efficient (for lookup, if not insert/delete) due to the way they match memory addressing in the von Neumann architecture, is it generally the case that all other structures are basically "supersets" or "super-structures" of the array?
After all, the array is nothing more than a contiguous collection of memory "cells", so we can think of an int as a single cell array. And we can think of a struct as an array where elements are not necessarily of the same type. I struggle to think how any other data structure could be constructed in any other way, but I guess it's best that I ask here to be sure.
EDIT: Just to be perfectly clear and correct, I do understand that a memory cell and a data element are not necessarily the same thing, an element may occupy more than one memory cell. The distinction between the two is a minor detail that shouldn't detract from the question.