\documentclass[tikz,border=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{xcolor}
\begin{document}
\begin{tikzpicture}[squarev/.style={draw,outer sep=0pt,inner sep=3pt,text depth=.25ex,text height=1.75ex,font=\ttfamily}, squaret/.style={draw,outer sep=0pt,inner sep=3pt,text depth=-0.25ex,text height=1.25ex,font=\ttfamily}]
\node[inner sep=5pt] (N@) {\normalsize $A$};
\node[anchor=north,draw,minimum height=3.2em,minimum width=1.5em,outer sep=0pt, fill=black!15](Na) at(N@.south) {} node[align=right,left] at(Na.west) {a};
\draw[->, semithick] ($(Na.east) + (-.5em, 0.8em)$) -- +(1em, 0) node (Ea@3) {};
\node[squarev, right] (Eab1) at (Ea@3.east) {b} node[squarev,right,fill=black!15] (Eab2) at (Eab1.east) {};
\draw[->, semithick] ($(Eab2.east) + (-.25em, 0)$) -- +(3.75em, 0) node (Eab3) {};
\draw[->, semithick] ($(Eab1.south) + (0, .25em)$) |- +(.5em, -1em) node (Tab@4) {};
\node[squaret,right] (Tab01) at (Tab@4.east) {$1$} node[squaret,right] (Tab02) at (Tab01.east) {$3$} node[squaret,right,fill=black!15] (Tab03) at (Tab02.east) {};
\draw[semithick] ($(Tab03.east) + (-.25em, 0.15em)$) -| +(.75em, -0.3em);
\draw[semithick] ($(Tab03.east) + (.25em, -0.25em)$) -- +(.5em, 0);
\draw[semithick] ($(Tab03.east) + (.35em, -0.45em)$) -- +(.3em, 0);
\node[squarev, right] (Ead1) at (Eab3.east) {d} node[squarev,right,fill=black!15] (Ead2) at (Ead1.east) {};
\draw[semithick] ($(Ead2.east) + (-.25em, 0.15em)$) -| +(0.75em, -0.3em);
\draw[semithick] ($(Ead2.east) + (.25em, -0.25em)$) -- +(.5em, 0);
\draw[semithick] ($(Ead2.east) + (.35em, -0.45em)$) -- +(.3em, 0);
\draw[->, semithick] ($(Ead1.south) + (0, .25em)$) |- +(.5em, -1em) node (Tad@4) {};
\node[squaret,right] (Tad01) at (Tad@4.east) {$2$} node[squaret,right] (Tad02) at (Tad01.east) {$3$} node[squaret,right,fill=black!15] (Tad03) at (Tad02.east) {};
\draw[->, semithick] ($(Tad03.east) + (-.25em, 0)$) -- +(.75em, 0) node (Tad04) {};
\node[squaret,right] (Tad11) at (Tad04.east) {$4$} node[squaret,right] (Tad12) at (Tad11.east) {$6$} node[squaret,right,fill=black!15] (Tad13) at (Tad12.east) {};
\draw[semithick] ($(Tad13.east) + (-.25em, 0.15em)$) -| +(.75em, -0.3em);
\draw[semithick] ($(Tad13.east) + (.25em, -0.25em)$) -- +(.5em, 0);
\draw[semithick] ($(Tad13.east) + (.35em, -0.45em)$) -- +(.3em, 0);
\node[anchor=north,draw,minimum height=3.2em,minimum width=1.5em,outer sep=0pt, fill=black!15](Nb) at(Na.south) {} node[align=right,left] at(Nb.west) {b};
\draw[->, semithick] ($(Nb.east) + (-.5em, 0.8em)$) -- +(1em, 0) node (Eb@3) {};
\node[squarev, right] (Ebc1) at (Eb@3.east) {c} node[squarev,right,fill=black!15] (Ebc2) at (Ebc1.east) {};
\draw[->, semithick] ($(Ebc2.east) + (-.25em, 0)$) -- +(3.75em, 0) node (Ebc3) {};
\draw[->, semithick] ($(Ebc1.south) + (0, .25em)$) |- +(.5em, -1em) node (Tbc@4) {};
\node[squaret,right] (Tbc01) at (Tbc@4.east) {$3$} node[squaret,right] (Tbc02) at (Tbc01.east) {$6$} node[squaret,right,fill=black!15] (Tbc03) at (Tbc02.east) {};
\draw[semithick] ($(Tbc03.east) + (-.25em, 0.15em)$) -| +(.75em, -0.3em);
\draw[semithick] ($(Tbc03.east) + (.25em, -0.25em)$) -- +(.5em, 0);
\draw[semithick] ($(Tbc03.east) + (.35em, -0.45em)$) -- +(.3em, 0);
\node[squarev, right] (Ebe1) at (Ebc3.east) {e} node[squarev,right,fill=black!15] (Ebe2) at (Ebe1.east) {};
\draw[semithick] ($(Ebe2.east) + (-.25em, 0.15em)$) -| +(0.75em, -0.3em);
\draw[semithick] ($(Ebe2.east) + (.25em, -0.25em)$) -- +(.5em, 0);
\draw[semithick] ($(Ebe2.east) + (.35em, -0.45em)$) -- +(.3em, 0);
\draw[->, semithick] ($(Ebe1.south) + (0, .25em)$) |- +(.5em, -1em) node (Tbe@4) {};
\node[squaret,right] (Tbe01) at (Tbe@4.east) {$3$} node[squaret,right] (Tbe02) at (Tbe01.east) {$5$} node[squaret,right,fill=black!15] (Tbe03) at (Tbe02.east) {};
\draw[semithick] ($(Tbe03.east) + (-.25em, 0.15em)$) -| +(.75em, -0.3em);
\draw[semithick] ($(Tbe03.east) + (.25em, -0.25em)$) -- +(.5em, 0);
\draw[semithick] ($(Tbe03.east) + (.35em, -0.45em)$) -- +(.3em, 0);
\node[anchor=north,draw,minimum height=3.2em,minimum width=1.5em,outer sep=0pt, fill=black!15](Nc) at(Nb.south) {} node[align=right,left] at(Nc.west) {c};
\draw[semithick] ($(Nc.east) + (-.5em, 0.8em)$) -| +(1em, -0.3em);
\draw[semithick] ($(Nc.east) + (.25em, 0.4em)$) -- +(.5em, 0);
\draw[semithick] ($(Nc.east) + (.35em, 0.2em)$) -- +(.3em, 0);
\node[anchor=north,draw,minimum height=3.2em,minimum width=1.5em,outer sep=0pt, fill=black!15](Nd) at(Nc.south) {} node[align=right,left] at(Nd.west) {d};
\draw[->, semithick] ($(Nd.east) + (-.5em, 0.8em)$) -- +(1em, 0) node (Ed@3) {};
\node[squarev, right] (Edb1) at (Ed@3.east) {b} node[squarev,right,fill=black!15] (Edb2) at (Edb1.east) {};
\draw[semithick] ($(Edb2.east) + (-.25em, 0.15em)$) -| +(0.75em, -0.3em);
\draw[semithick] ($(Edb2.east) + (.25em, -0.25em)$) -- +(.5em, 0);
\draw[semithick] ($(Edb2.east) + (.35em, -0.45em)$) -- +(.3em, 0);
\draw[->, semithick] ($(Edb1.south) + (0, .25em)$) |- +(.5em, -1em) node (Tdb@4) {};
\node[squaret,right] (Tdb01) at (Tdb@4.east) {$0$} node[squaret,right] (Tdb02) at (Tdb01.east) {$6$} node[squaret,right,fill=black!15] (Tdb03) at (Tdb02.east) {};
\draw[semithick] ($(Tdb03.east) + (-.25em, 0.15em)$) -| +(.75em, -0.3em);
\draw[semithick] ($(Tdb03.east) + (.25em, -0.25em)$) -- +(.5em, 0);
\draw[semithick] ($(Tdb03.east) + (.35em, -0.45em)$) -- +(.3em, 0);
\node[anchor=north,draw,minimum height=3.2em,minimum width=1.5em,outer sep=0pt, fill=black!15](Ne) at(Nd.south) {} node[align=right,left] at(Ne.west) {e};
\draw[->, semithick] ($(Ne.east) + (-.5em, 0.8em)$) -- +(1em, 0) node (Ee@3) {};
\node[squarev, right] (Eed1) at (Ee@3.east) {d} node[squarev,right,fill=black!15] (Eed2) at (Eed1.east) {};
\draw[semithick] ($(Eed2.east) + (-.25em, 0.15em)$) -| +(0.75em, -0.3em);
\draw[semithick] ($(Eed2.east) + (.25em, -0.25em)$) -- +(.5em, 0);
\draw[semithick] ($(Eed2.east) + (.35em, -0.45em)$) -- +(.3em, 0);
\draw[->, semithick] ($(Eed1.south) + (0, .25em)$) |- +(.5em, -1em) node (Ted@4) {};
\node[squaret,right] (Ted01) at (Ted@4.east) {$3$} node[squaret,right] (Ted02) at (Ted01.east) {$5$} node[squaret,right,fill=black!15] (Ted03) at (Ted02.east) {};
\draw[semithick] ($(Ted03.east) + (-.25em, 0.15em)$) -| +(.75em, -0.3em);
\draw[semithick] ($(Ted03.east) + (.25em, -0.25em)$) -- +(.5em, 0);
\draw[semithick] ($(Ted03.east) + (.35em, -0.45em)$) -- +(.3em, 0);
\end{tikzpicture}
\end{document}