package Ġalgo . expert . solutions . medium Ċ Ċ import Ġalgo . expert . utils . B ST Ċ Ċ fun ĠminHeight B st ( array : ĠList < Int >): ĠB ST Ġ{ ĊĠĠĠ Ġ// ĠThe Ġinput Ġarray Ġis Ġsorted . ĠSelect Ġeach Ġnode Ġto Ġinsert Ġin Ġan Ġorder ĊĠĠĠ Ġ// Ġthat Ġguarantees Ġthe Ġtree Ġis Ġbal anced Ġ( left Ġtree Ġhas Ġsame Ġnumber Ġof Ġnodes Ġas Ġright ) ĊĊĠĠĠ Ġ// ĠAl go : ĠFirst Ġnode Ġto Ġinsert Ġis Ġthe Ġmiddle Ġof Ġthe Ġarray , Ġthen Ġtake Ġeach Ġhalf Ġof ĊĠĠĠ Ġ// Ġthe Ġarray Ġand Ġselect Ġthe Ġmiddle Ġof Ġeach Ġarray Ġto Ġinsert Ġinto Ġthe Ġtree ĊĊĠĠĠ Ġval Ġmiddle Val Ġ= Ġarray [ array . size Ġ/ Ġ 2 ] ĊĠĠĠ Ġvar Ġb st Ġ= ĠB ST ( middle Val ) ĊĊĠĠĠ Ġval Ġleft Ġ= Ġarray . sub List ( 0 , Ġarray . size Ġ/ Ġ 2 ) ĊĠĠĠ Ġval Ġright Ġ= Ġarray . sub List ( array . size Ġ/ Ġ 2 Ġ+ Ġ 1 , Ġarray . size ) ĊĊĠĠĠ Ġif Ġ( left . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġb st . left Ġ= ĠminHeight B st ( left ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( right . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġb st . right Ġ= ĠminHeight B st ( right ) ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġreturn Ġb st Ċ } Ċ