@@ -179,6 +179,16 @@ def nodeToMat(node: BinaryNode, depth=-1, valueFillChar=None, gapFillChar=None,
179179 for i , index in enumerate (valueIndexes ):
180180 mat [level ][index ] = [center ("/" , unitSize = unitSize , fillChar = " " ), center ("\\ " , unitSize = unitSize , fillChar = " " )][i % 2 ]
181181
182+ # Fill gaps between pairs on the even level below (level + 1)
183+ for i in range (0 , len (valueIndexes ), 2 ):
184+ if i + 1 < len (valueIndexes ):
185+ # Calculate parent position (should not be overwritten)
186+ parent_col = (valueIndexes [i ] + valueIndexes [i + 1 ]) // 2
187+ # Fill columns between valueIndexes[i] and valueIndexes[i+1], except parent
188+ for col in range (valueIndexes [i ] + 1 , valueIndexes [i + 1 ]):
189+ if col != parent_col :
190+ mat [level + 1 ][col ] = center ("" , unitSize = unitSize , fillChar = gapFillChar )
191+
182192 # Calculate parent positions (midpoints between child pairs)
183193 next = []
184194 for i in range (0 , len (valueIndexes ) - 1 , 2 ):
@@ -195,17 +205,6 @@ def nodeToMat(node: BinaryNode, depth=-1, valueFillChar=None, gapFillChar=None,
195205 for i , index in enumerate (valueIndexes ):
196206 if codes [i ] in tree :
197207 mat [level ][index ] = tree [codes [i ]]
198-
199- # Fill gaps between pairs using prev (previous level's valueIndexes)
200- if prev is not None :
201- for i in range (0 , len (prev ), 2 ):
202- if i + 1 < len (prev ):
203- # Calculate parent position (should not be overwritten)
204- parent_col = (prev [i ] + prev [i + 1 ]) // 2
205- # Fill columns between prev[i] and prev[i+1], except parent
206- for col in range (prev [i ] + 1 , prev [i + 1 ]):
207- if col != parent_col :
208- mat [level ][col ] = center ("" , unitSize = unitSize , fillChar = gapFillChar )
209208
210209 # Remove empty leading columns if requested
211210 if removeEmpty :
0 commit comments