Skip to content

Traversing

Top-down

graph TD 0 -->|0 * 2 + 1| 1 0 -->|0 * 2 + 2| 2 1 -->|1 * 2 + 1| 3 1 -->|1 * 2 + 2| 4 2 -->|2 * 2 + 1| 5 2 -->|2 * 2 + 2| 6 3 -->|3 * 2 + 1 - 7| v0[0]:::plain 3 -->|3 * 2 + 2 - 7| v1[1]:::plain 4 -->|4 * 2 + 1 - 7| v2[2]:::plain 4 -->|4 * 2 + 2 - 7| v3[3]:::plain 5 -->|5 * 2 + 1 - 7| v4[4]:::plain 5 -->|5 * 2 + 2 - 7| v5[5]:::plain 6 -->|6 * 2 + 1 - 7| v6[6]:::plain 6 -->|6 * 2 + 2 - 7| v7[7]:::plain classDef plain fill:#fff;

Traversing at tree

left_child = i*2 + 1

right_child = i*2 + 2

Traversing from tree to the plain data

shift = 3

shift_down = 7

left_child = i*2 + 1 - shift_down

right_child = i*2 + 2 - shift_down

Down-top

graph TD 1 -->|"(1 - 1) / 2"| 0 2 -->|"(2 - 1) / 2"| 0 3 -->|"(3 - 1) / 2"| 1 4 -->|"(4 - 1) / 2"| 1 5 -->|"(5 - 1) / 2"| 2 6 -->|"(6 - 1) / 2"| 2 v0[0]:::plain -->|"(0 + 7 - 1) / 2"| 3 v1[1]:::plain -->|"(1 + 7 - 1) / 2"| 3 v2[2]:::plain -->|"(2 + 7 - 1) / 2"| 4 v3[3]:::plain -->|"(3 + 7 - 1) / 2"| 4 v4[4]:::plain -->|"(4 + 7 - 1) / 2"| 5 v5[5]:::plain -->|"(5 + 7 - 1) / 2"| 5 v6[6]:::plain -->|"(6 + 7 - 1) / 2"| 6 v7[7]:::plain -->|"(7 + 7 - 1) / 2"| 6 classDef plain fill:#fff;

Traversing at tree

parent = (i - 1) / 2

Traversing from tree to the plain data

shift = 3

shift_down = 7

parent = (j + shift_down - 1) / 2