;;;------------------------------------------------------------------------- ;;; 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 -------------------------------------------------