package Ġchallenges . aug ust 2 0 2 1 Ċ Ċ /** Ċ Ġ* ĠDefinition Ġfor Ġa ĠNode . Ċ Ġ* Ġclass ĠNode ( var Ġ` val `: ĠInt ) Ġ{ Ċ Ġ* ĠĠĠĠ Ġvar Ġchildren : ĠList < Node ?> Ġ= ĠlistOf () Ċ Ġ* Ġ} Ċ Ġ*/ Ċ Ċ fun Ġlevel Order ( root : ĠNode ?): ĠList < List < Int >> Ġ{ ĊĠĠĠ Ġtail rec Ġfun Ġwalk ( nodes : ĠList < Node ? >, Ġresult : ĠMutable List < List < Int >> Ġ= Ġmutable ListOf ()): ĠList < List < Int >> Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( nodes . isEmpty ()) Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġval Ġlevel Ġ= Ġnodes . map NotNull Ġ{ Ġit ?. ` val ` Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( level . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( level ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġnew Nodes Ġ= Ġnodes . flatMap Ġ{ Ġit ?. children Ġ?: Ġempty List () Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġwalk ( new Nodes , Ġresult ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġwalk ( listOf ( root )) Ċ } ĊĊ Ċ class ĠNode ( ĊĠĠĠ Ġvar Ġ` val `: ĠInt , ĊĠĠĠ Ġvar Ġchildren : ĠList < Node ?> Ġ= ĠlistOf () Ċ )