fmyInfBT n = Join n (fmyInfBT (2*n) ) (fmyInfBT ((2*n)+1)) myIT:: InfNBT myIT = fmyInfBT 1 takeTlevel 0 t = [t] takeTlevel n (Join _ t1 t2)= (takeTlevel (n-1) t1)++(takeTlevel (n-1) t2) roots [] = [] roots ((Join n t1 t2):ts) = n:(roots ts) levelorderAux l infT = (roots (takeTlevel l infT))++(levelorderAux (l+1) infT) levelorder infT = levelorderAux 0 infT [1..]