;;;-------------------------------------------------------------------------
;;; Insertion and removal.
;; Initial state.
tree dump
#0x00000000 (n = 1) (*) 0xffe00000$ 110
#0x00000002 (n = 3) (*) 0xffd00002$ 120
#0x00000001 (n = 1) (*) 0xffe00001$ 130
#0x00000006 (n = 7) (*) 0xffc00006$ 140
#0x00000003 (n = 1) (*) 0xffe00003$ 150
#0x00000005 (n = 3) (*) 0xffd00005$ 160
#0x00000004 (n = 1) (*) 0xffe00004$ 170
#0x0000000e (n = 15) (*) 0xffb0000e$ 180
#0x00000007 (n = 1) (*) 0xffe00007$ 190
#0x00000009 (n = 3) (*) 0xffd00009$ 200
#0x00000008 (n = 1) (*) 0xffe00008$ 210
#0x0000000d (n = 7) (*) 0xffc0000d$ 220
#0x0000000a (n = 1) (*) 0xffe0000a$ 230
#0x0000000c (n = 3) (*) 0xffd0000c$ 240
#0x0000000b (n = 1) (*) 0xffe0000b$ 250
;; Insertion.
0xfff00000$ 155
tree dump
#0x0000000f (n = 1) (*) 0xffe00000$ 110
#0x00000011 (n = 3) (*) 0xffd00002$ 120
#0x00000010 (n = 1) (*) 0xffe00001$ 130
#0x00000015 (n = 8) (*) 0xffc00006$ 140
#0x00000012 (n = 2) (*) 0xffe00003$ 150
#0x0000001e (n = 1) (*) 0xfff00000$ 155
#0x00000014 (n = 4) (*) 0xffd00005$ 160
#0x00000013 (n = 1) (*) 0xffe00004$ 170
#0x0000001d (n = 16) (*) 0xffb0000e$ 180
#0x00000016 (n = 1) (*) 0xffe00007$ 190
#0x00000018 (n = 3) (*) 0xffd00009$ 200
#0x00000017 (n = 1) (*) 0xffe00008$ 210
#0x0000001c (n = 7) (*) 0xffc0000d$ 220
#0x00000019 (n = 1) (*) 0xffe0000a$ 230
#0x0000001b (n = 3) (*) 0xffd0000c$ 240
#0x0000001a (n = 1) (*) 0xffe0000b$ 250
0xffd00000$ 155
XYLA-TREAP INSERT right child
XYLA-TREAP INSERT left child
tree dump
#0x0000001f (n = 1) (*) 0xffe00000$ 110
#0x00000021 (n = 3) (*) 0xffd00002$ 120
#0x00000020 (n = 1) (*) 0xffe00001$ 130
#0x00000025 (n = 8) (*) 0xffc00006$ 140
#0x00000022 (n = 1) (*) 0xffe00003$ 150
#0x0000002e (n = 4) (*) 0xffd00000$ 155
#0x00000024 (n = 2) (*) 0xffd00005$ 160
#0x00000023 (n = 1) (*) 0xffe00004$ 170
#0x0000002d (n = 16) (*) 0xffb0000e$ 180
#0x00000026 (n = 1) (*) 0xffe00007$ 190
#0x00000028 (n = 3) (*) 0xffd00009$ 200
#0x00000027 (n = 1) (*) 0xffe00008$ 210
#0x0000002c (n = 7) (*) 0xffc0000d$ 220
#0x00000029 (n = 1) (*) 0xffe0000a$ 230
#0x0000002b (n = 3) (*) 0xffd0000c$ 240
#0x0000002a (n = 1) (*) 0xffe0000b$ 250
0xffa00000$ 155
XYLA-TREAP INSERT right child
XYLA-TREAP INSERT left child
XYLA-TREAP INSERT right child
XYLA-TREAP INSERT left child
tree dump
#0x0000002f (n = 1) (*) 0xffe00000$ 110
#0x00000031 (n = 3) (*) 0xffd00002$ 120
#0x00000030 (n = 1) (*) 0xffe00001$ 130
#0x00000035 (n = 5) (*) 0xffc00006$ 140
#0x00000032 (n = 1) (*) 0xffe00003$ 150
#0x0000003e (n = 16) (*) 0xffa00000$ 155
#0x00000034 (n = 2) (*) 0xffd00005$ 160
#0x00000033 (n = 1) (*) 0xffe00004$ 170
#0x0000003d (n = 10) (*) 0xffb0000e$ 180
#0x00000036 (n = 1) (*) 0xffe00007$ 190
#0x00000038 (n = 3) (*) 0xffd00009$ 200
#0x00000037 (n = 1) (*) 0xffe00008$ 210
#0x0000003c (n = 7) (*) 0xffc0000d$ 220
#0x00000039 (n = 1) (*) 0xffe0000a$ 230
#0x0000003b (n = 3) (*) 0xffd0000c$ 240
#0x0000003a (n = 1) (*) 0xffe0000b$ 250
;; Removal.
170
tree dump
#0x0000003f (n = 1) (*) 0xffe00000$ 110
#0x00000041 (n = 3) (*) 0xffd00002$ 120
#0x00000040 (n = 1) (*) 0xffe00001$ 130
#0x00000045 (n = 6) (*) 0xffc00006$ 140
#0x00000042 (n = 1) (*) 0xffe00003$ 150
#0x00000044 (n = 2) (*) 0xffd00005$ 160
#0x0000004d (n = 14) (*) 0xffb0000e$ 180
#0x00000046 (n = 1) (*) 0xffe00007$ 190
#0x00000048 (n = 3) (*) 0xffd00009$ 200
#0x00000047 (n = 1) (*) 0xffe00008$ 210
#0x0000004c (n = 7) (*) 0xffc0000d$ 220
#0x00000049 (n = 1) (*) 0xffe0000a$ 230
#0x0000004b (n = 3) (*) 0xffd0000c$ 240
#0x0000004a (n = 1) (*) 0xffe0000b$ 250
220
XYLA-TREAP REMOVE float left child
XYLA-TREAP REMOVE float right child
XYLA-TREAP REMOVE float left child
tree dump
#0x0000004e (n = 1) (*) 0xffe00000$ 110
#0x00000050 (n = 3) (*) 0xffd00002$ 120
#0x0000004f (n = 1) (*) 0xffe00001$ 130
#0x00000054 (n = 7) (*) 0xffc00006$ 140
#0x00000051 (n = 1) (*) 0xffe00003$ 150
#0x00000053 (n = 3) (*) 0xffd00005$ 160
#0x00000052 (n = 1) (*) 0xffe00004$ 170
#0x0000005c (n = 14) (*) 0xffb0000e$ 180
#0x00000055 (n = 1) (*) 0xffe00007$ 190
#0x00000057 (n = 6) (*) 0xffd00009$ 200
#0x00000056 (n = 2) (*) 0xffe00008$ 210
#0x00000058 (n = 1) (*) 0xffe0000a$ 230
#0x0000005a (n = 4) (*) 0xffd0000c$ 240
#0x00000059 (n = 1) (*) 0xffe0000b$ 250
180
XYLA-TREAP REMOVE float left child
XYLA-TREAP REMOVE float right child
XYLA-TREAP REMOVE float left child
XYLA-TREAP REMOVE float right child
XYLA-TREAP REMOVE float left child
tree dump
#0x0000005d (n = 1) (*) 0xffe00000$ 110
#0x0000005f (n = 3) (*) 0xffd00002$ 120
#0x0000005e (n = 1) (*) 0xffe00001$ 130
#0x00000063 (n = 14) (*) 0xffc00006$ 140
#0x00000060 (n = 1) (*) 0xffe00003$ 150
#0x00000062 (n = 6) (*) 0xffd00005$ 160
#0x00000061 (n = 2) (*) 0xffe00004$ 170
#0x00000064 (n = 1) (*) 0xffe00007$ 190
#0x00000066 (n = 4) (*) 0xffd00009$ 200
#0x00000065 (n = 1) (*) 0xffe00008$ 210
#0x0000006a (n = 10) (*) 0xffc0000d$ 220
#0x00000067 (n = 1) (*) 0xffe0000a$ 230
#0x00000069 (n = 3) (*) 0xffd0000c$ 240
#0x00000068 (n = 1) (*) 0xffe0000b$ 250
;;;-------------------------------------------------------------------------
;;; Splitting and joining.
;; With joining node.
(# node #0x0000007a 180> # node #0x00000079 220> # node #0x00000075 200>)
XYLA-TREAP SPLIT left child
XYLA-TREAP SPLIT right child
tree dump
#0x00000074 (n = 1) (*) 0xffe00008$ 210
#0x00000079 (n = 5) (*) 0xffc0000d$ 220
#0x00000076 (n = 1) (*) 0xffe0000a$ 230
#0x00000078 (n = 3) (*) 0xffd0000c$ 240
#0x00000077 (n = 1) (*) 0xffe0000b$ 250
tree dump
#0x00000075 (n = 1) (*) 0xffd00009$ 200
tree dump
#0x0000006c (n = 1) (*) 0xffe00000$ 110
#0x0000006e (n = 3) (*) 0xffd00002$ 120
#0x0000006d (n = 1) (*) 0xffe00001$ 130
#0x00000072 (n = 7) (*) 0xffc00006$ 140
#0x0000006f (n = 1) (*) 0xffe00003$ 150
#0x00000071 (n = 3) (*) 0xffd00005$ 160
#0x00000070 (n = 1) (*) 0xffe00004$ 170
#0x0000007a (n = 9) (*) 0xffb0000e$ 180
#0x00000073 (n = 1) (*) 0xffe00007$ 190
0xfff00000$ 199
XYLA-TREAP JOIN mid float left (next right)
XYLA-TREAP JOIN mid float right (next left)
XYLA-TREAP JOIN mid float left (next right)
XYLA-TREAP JOIN mid float right (next done)
tree dump
#0x0000006c (n = 1) (*) 0xffe00000$ 110
#0x0000006e (n = 3) (*) 0xffd00002$ 120
#0x0000006d (n = 1) (*) 0xffe00001$ 130
#0x00000072 (n = 7) (*) 0xffc00006$ 140
#0x0000006f (n = 1) (*) 0xffe00003$ 150
#0x00000071 (n = 3) (*) 0xffd00005$ 160
#0x00000070 (n = 1) (*) 0xffe00004$ 170
#0x0000007a (n = 15) (*) 0xffb0000e$ 180
#0x00000073 (n = 3) (*) 0xffe00007$ 190
#0x0000007b (n = 1) (*) 0xfff00000$ 199
#0x00000074 (n = 2) (*) 0xffe00008$ 210
#0x00000079 (n = 7) (*) 0xffc0000d$ 220
#0x00000076 (n = 1) (*) 0xffe0000a$ 230
#0x00000078 (n = 3) (*) 0xffd0000c$ 240
#0x00000077 (n = 1) (*) 0xffe0000b$ 250
;; Without joining node.
(# node #0x0000008a 180> # node #0x00000089 220> # node #0x00000085 200> # node #0x00000083 190> # (nil)>)
XYLA-TREAP SPLIT right child
XYLA-TREAP SPLIT left child
XYLA-TREAP SPLIT left child
XYLA-TREAP SPLIT right child
tree dump
#0x00000085 (n = 2) (*) 0xffd00009$ 200
#0x00000084 (n = 1) (*) 0xffe00008$ 210
#0x00000089 (n = 6) (*) 0xffc0000d$ 220
#0x00000086 (n = 1) (*) 0xffe0000a$ 230
#0x00000088 (n = 3) (*) 0xffd0000c$ 240
#0x00000087 (n = 1) (*) 0xffe0000b$ 250
tree dump
(tree empty)
tree dump
#0x0000007c (n = 1) (*) 0xffe00000$ 110
#0x0000007e (n = 3) (*) 0xffd00002$ 120
#0x0000007d (n = 1) (*) 0xffe00001$ 130
#0x00000082 (n = 7) (*) 0xffc00006$ 140
#0x0000007f (n = 1) (*) 0xffe00003$ 150
#0x00000081 (n = 3) (*) 0xffd00005$ 160
#0x00000080 (n = 1) (*) 0xffe00004$ 170
#0x0000008a (n = 9) (*) 0xffb0000e$ 180
#0x00000083 (n = 1) (*) 0xffe00007$ 190
(no key)
XYLA-TREAP JOIN stitch right edge
XYLA-TREAP JOIN stitch left edge
tree dump
#0x0000007c (n = 1) (*) 0xffe00000$ 110
#0x0000007e (n = 3) (*) 0xffd00002$ 120
#0x0000007d (n = 1) (*) 0xffe00001$ 130
#0x00000082 (n = 7) (*) 0xffc00006$ 140
#0x0000007f (n = 1) (*) 0xffe00003$ 150
#0x00000081 (n = 3) (*) 0xffd00005$ 160
#0x00000080 (n = 1) (*) 0xffe00004$ 170
#0x0000008a (n = 15) (*) 0xffb0000e$ 180
#0x00000083 (n = 1) (*) 0xffe00007$ 190
#0x00000085 (n = 3) (*) 0xffd00009$ 200
#0x00000084 (n = 1) (*) 0xffe00008$ 210
#0x00000089 (n = 7) (*) 0xffc0000d$ 220
#0x00000086 (n = 1) (*) 0xffe0000a$ 230
#0x00000088 (n = 3) (*) 0xffd0000c$ 240
#0x00000087 (n = 1) (*) 0xffe0000b$ 250
;;;----- That's all, folks -------------------------------------------------