package Ġgraph . b fs ĊĊ Ċ type alias ĠGraph < T > Ġ= ĠMap < T , ĠList < T >> Ċ Ċ type alias ĠQueue < T > Ġ= ĠArray Deque < T > ĊĊ Ċ fun Ġ< T > ĠGraph < T >. traverse ( root : ĠT ): ĠList < T > Ġ{ ĊĠĠĠ Ġval Ġgraph Ġ= Ġthis ĊĠĠĠ Ġrequire ( root Ġin Ġgraph ) Ġ{ Ġ" Invalid Ġroot Ġvertex Ġ'$ root '" Ġ} ĊĊĠĠĠ Ġval Ġexplo red Ġ= Ġlinked Set Of < T >() ĊĠĠĠ Ġval Ġqueue Ġ= ĠQueue < T >() ĊĠĠĠ Ġqueue Ġ+= Ġroot ĊĊĠĠĠ Ġwhile Ġ( queue . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvertex Ġ= Ġqueue . remove First () ĊĠĠĠĠĠĠĠ Ġif Ġ( vertex Ġ! in Ġexplo red ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexplo red Ġ+= Ġvertex ĊĠĠĠĠĠĠĠĠĠĠĠ Ġqueue Ġ+= Ġgraph [ vertex ]. or Empty () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġreturn Ġexplo red . toList () Ċ } ĊĊ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġgraph Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġ// Ġfirst Ġsub graph ĊĠĠĠĠĠĠĠ Ġ" A " Ġto ĠlistOf (" B ", Ġ" C ", Ġ" D "), ĊĠĠĠĠĠĠĠ Ġ" B " Ġto ĠlistOf (" E "), ĊĠĠĠĠĠĠĠ Ġ" C " Ġto ĠlistOf (" F ", Ġ" G "), ĊĠĠĠĠĠĠĠ Ġ" F " Ġto ĠlistOf (" H ", Ġ" I "), ĊĊĠĠĠĠĠĠĠ Ġ// Ġsecond Ġsub graph ĊĠĠĠĠĠĠĠ Ġ" J " Ġto ĠlistOf (" K ", Ġ" L ", Ġ" M "), ĊĠĠĠĠĠĠĠ Ġ" L " Ġto ĠlistOf (" N ", Ġ" O ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġresult Ġ= Ġgraph . traverse ( root Ġ= Ġ" A ") ĊĊĠĠĠ Ġprintln ( result ) Ġ// Ġ[ A , ĠB , ĠC , ĠD , ĠE , ĠF , ĠG , ĠH , ĠI ] Ċ }