T1 == ["zero", [0, [0, [0,[],["eight",[],[]]], ["four",[],[]]], ["two",[],["six",[],[]]]], ["one", [0, [0,[],["nine",[],[]]], ["five",[],[]]], ["three",[],["seven",[],[]]]]] default == 0 get [] ind == default get [n, L, R] 0 == n get [n, L, R] ind == get L (ind/2) <| ind % 2 = 0 |> get R (ind/2) put [] 0 val == [val, [], []] put [] ind val == [default, put [] (ind/2) val, []] <| ind % 2 = 0 |> [default, [], put [] (ind/2) val] put [n, L, R] 0 val == [val, L, R] put [n, L, R] ind val == [n, put L (ind/2) val, R] <| ind % 2 = 0 |> [n, L, put R (ind/2) val]