On Sunday, 27 December 2015 at 20:01:47 UTC, Gary Willoughby wrote:
On Sunday, 27 December 2015 at 17:23:35 UTC, Gary Willoughby wrote:
I have a binary tree storing ints implemented using an array. The internal state looks like this:

8,7,6,4,1,3,5,2

When extracting this data, it is returned as 8,7,6,5,4,3,2,1.

Is it possible to elegantly add a range on top of the internal state to return the correct value order I would expect when extracting? Is there an algorithm documented somewhere for doing this?

Some explanatory reference:

https://en.wikipedia.org/wiki/Binary_tree#Arrays

If you implement a struct with range primitives over it, you can use it as a range.

See the second code example in std.container.binaryheap's docs at
http://dlang.org/phobos/std_container_binaryheap.html#.BinaryHeap.

Or do you mean you want to print variables in order without modifying the array? Sounds like this would require at least N log N time and N additional memory for an N-element heap anyway (or quadratic time and constant memory). So, you can just copy the array and exhaust the copied binary heap, getting the same asymptotic complexity: N log N time and N additional memory.

Ivan Kazmenko.

Reply via email to