3 \documentclass[12pt]{article}
4 \usepackage{elemfig,amsmath}
6 \newcommand{\xlab}[1]{\mlabel{\textsc{#1}}}
10 data[0] = btex \xlab{a} etex; data[1] = btex \xlab{b} etex; data[2] = btex \xlab{c} etex;
11 data[3] = btex \xlab{d} etex; data[4] = btex \xlab{e} etex; data[5] = btex \xlab{f} etex;
12 data[6] = btex \xlab{g} etex; data[7] = btex \xlab{h} etex; data[8] = btex \xlab{i} etex;
13 data[9] = btex \xlab{j} etex; data[10] = btex \xlab{k} etex; data[11] = btex \xlab{l} etex;
14 data[12] = btex \xlab{m} etex; data[13] = btex \xlab{n} etex; data[14] = btex \xlab{o} etex;
16 dotdata = btex \xlab{\dots\dots} etex;
18 pair min_reasonable_cell; min_reasonable_cell := (0,0);
20 min_reasonable_cell :=
21 (max(xpart min_reasonable_cell, xpart (urcorner data[_i_] - llcorner data[_i_])),
22 max(ypart min_reasonable_cell, ypart (urcorner data[_i_] - llcorner data[_i_])));
24 color deletedelement; deletedelement = .5white;
25 color upperlayer, upperlayerfill; upperlayer = (0,0,.5); upperlayerfill = (.9,.9,1);
27 picture emptyqueue; emptyqueue := btex \phantom{\elementlabel{Queue}} etex;
28 picture vemptyqueue; vemptyqueue := emptyqueue rotated 90 xscaled .4;
32 % tree with MNO removed, gclayer begin
33 boxjoin(b.w - a.e = (20,0));
34 leafit.a(data[0], data[1], data[2]);
35 leafit.d(data[3], data[4], data[5]);
36 leafit.g(data[6], data[7], data[8]);
37 leafit.j(data[9], data[10], data[11]);
39 leafit.x(dotdata, dotdata, dotdata, dotdata);
40 x.nextpath = x.prevpath = emptypath;
41 internalnodeit.ina(data[3], data[6], data[9]);
42 ina.s = .5[a.nw,j.ne] + (0,24);
43 .5[x.sw,x.se] = ina.n + (0,24);
44 fixelement(a,d,g,j,ina,x);
46 drawelement(a,d,g,j,ina);
47 fillelement(x)(upperlayerfill); drawelement(x) withcolor upperlayer;
49 interim linecap := butt;
50 draw (x.sw - (40,10)) -- (x.se + (40,-10)) withpen pencircle scaled 5 dashed evenly scaled 3 withcolor upperlayerfill;
52 drawconnarrow x.value[1] {down} .. tension 2 .. {down} ina.n withpen connectionpen scaled 2 withcolor upperlayer;
53 internalnodeconnect(ina,a,d,g,j);
57 % tree with MNO removed, gclayer begin
58 boxjoin(b.w - a.e = (20,0));
59 leafit.a(data[0], data[1], data[2]);
60 leafit.d(data[3], data[4], data[5]);
61 leafit.g(data[6], data[7], data[8]);
62 leafit.j(data[9], data[10], data[11]);
63 leafit.m(data[12], nullpicture, nullpicture);
64 j.locked = m.locked = true;
66 leafit.x(dotdata, dotdata, dotdata, dotdata);
67 x.nextpath = x.prevpath = emptypath;
68 internalnodeit.ina(data[3], data[6], data[9]);
69 ina.s = .5[a.nw,j.ne] + (0,24);
70 .5[x.sw,x.se] = ina.n + (0,24);
71 fixelement(a,d,g,j,m,ina,x);
72 leafconnect(a,d,g,j,m);
73 drawelement(a,d,g,j,m,ina);
74 fillelement(x)(upperlayerfill); drawelement(x) withcolor upperlayer;
76 interim linecap := butt;
77 draw (x.sw - (40,10)) -- (x.se + (40,-10)) withpen pencircle scaled 5 dashed evenly scaled 3 withcolor upperlayerfill;
79 drawconnarrow x.value[1] {down} .. tension 2 .. {down} ina.n withpen connectionpen scaled 2 withcolor upperlayer;
80 internalnodeconnect(ina,a,d,g,j);
84 % tree with MNO removed, gclayer begin
85 boxjoin(b.w - a.e = (20,0));
86 leafit.a(data[0], data[1], data[2]);
87 leafit.d(data[3], data[4], data[5]);
88 leafit.g(data[6], data[7], data[8]);
89 leafit.j(data[9], data[10], data[11]);
90 leafit.m(data[12], nullpicture, nullpicture);
92 leafit.x(dotdata, dotdata, dotdata, dotdata);
93 x.nextpath = x.prevpath = emptypath;
94 internalnodeit.ina(data[3], data[6], nullpicture);
95 internalnodeit.inj(data[12], nullpicture, nullpicture);
96 ina.locked = inj.locked = true;
97 ina.s = .5[a.nw,g.ne] + (0,24);
98 inj.s = .5[j.nw,m.ne] + (0,24);
99 .5[x.sw,x.se] = ina.n + (0,24);
100 fixelement(a,d,g,j,m,ina,inj,x);
101 leafconnect(a,d,g,j,m);
102 drawelement(a,d,g,j,m,ina,inj);
103 fillelement(x)(upperlayerfill); drawelement(x) withcolor upperlayer;
105 interim linecap := butt;
106 draw (x.sw - (40,10)) -- (x.se + (40,-10)) withpen pencircle scaled 5 dashed evenly scaled 3 withcolor upperlayerfill;
108 drawconnarrow x.value[1] {down} .. tension 2 .. {down} ina.n withpen connectionpen scaled 2 withcolor upperlayer;
109 internalnodeconnect(ina,a,d,g);
110 internalnodeconnect(inj,j,m);
114 % tree with MNO removed, gclayer begin
115 boxjoin(b.w - a.e = (20,0));
116 leafit.a(data[0], data[1], data[2]);
117 leafit.d(data[3], data[4], data[5]);
118 leafit.g(data[6], data[7], data[8]);
119 leafit.j(data[9], data[10], data[11]);
120 leafit.m(data[12], nullpicture, nullpicture);
122 leafit.x(dotdata, dotdata, dotdata, dotdata);
123 x.nextpath = x.prevpath = emptypath;
124 internalnodeit.ina(data[3], data[6], nullpicture);
125 internalnodeit.inj(data[12], nullpicture, nullpicture);
126 internalnodeit.root(data[9], nullpicture, nullpicture);
127 ina.s = .5[a.nw,g.ne] + (0,24);
128 inj.s = .5[j.nw,m.ne] + (0,24);
129 root.sw = .3[ina.n,inj.n] + (0,24);
130 .8[x.sw,x.se] = root.n + (0,24);
131 fixelement(a,d,g,j,m,root,ina,inj,x);
132 leafconnect(a,d,g,j,m);
133 drawelement(a,d,g,j,m,ina,inj,root);
134 fillelement(x)(upperlayerfill); drawelement(x) withcolor upperlayer;
136 interim linecap := butt;
137 draw (x.sw - (40,10)) -- (x.se + (40,-10)) withpen pencircle scaled 5 dashed evenly scaled 3 withcolor upperlayerfill;
139 drawconnarrow x.value[1] {down} .. tension 2 .. {down} ina.n withpen connectionpen scaled 2 withcolor upperlayer;
140 internalnodeconnect(ina,a,d,g);
141 internalnodeconnect(inj,j,m);
142 ina.connectin := .6[ina.nw,ina.ne];
143 internalnodeconnect(root,ina,inj);
147 % tree with MNO removed, gclayer begin
148 boxjoin(b.w - a.e = (20,0));
149 leafit.a(data[0], data[1], data[2]);
150 leafit.d(data[3], data[4], data[5]);
151 leafit.g(data[6], data[7], data[8]);
152 leafit.j(data[9], data[10], data[11]);
153 leafit.m(data[12], nullpicture, nullpicture);
155 leafit.x(dotdata, dotdata, dotdata, dotdata);
157 x.nextpath = x.prevpath = emptypath;
158 internalnodeit.ina(data[3], data[6], nullpicture);
159 internalnodeit.inj(data[12], nullpicture, nullpicture);
160 internalnodeit.root(data[9], nullpicture, nullpicture);
161 ina.s = .5[a.nw,g.ne] + (0,24);
162 inj.s = .5[j.nw,m.ne] + (0,24);
163 root.sw = .3[ina.n,inj.n] + (0,24);
164 .5[x.sw,x.se] = root.n + (0,24);
165 fixelement(a,d,g,j,m,root,ina,inj,x);
166 leafconnect(a,d,g,j,m);
167 drawelement(a,d,g,j,m,ina,inj,root);
168 fillelement(x)(upperlayerfill); drawelement(x) withcolor upperlayer;
170 interim linecap := butt;
171 draw (x.sw - (40,10)) -- (x.se + (40,-10)) withpen pencircle scaled 5 dashed evenly scaled 3 withcolor upperlayerfill;
173 drawconnarrow x.value[1] {down} .. tension 2 .. {down} root.n withpen connectionpen scaled 2 withcolor upperlayer;
174 internalnodeconnect(ina,a,d,g);
175 internalnodeconnect(inj,j,m);
176 internalnodeconnect(root,ina,inj);