Definim la profunditat d’un node en un arbre com:
|
Per exemple, un arbre binari a on tots els nodes tenen com a valor la seva pròpia profunditat seria:
1 |-- 2 | |-- 3 | '-- # '-- 2 |-- 3 | |-- # | '-- 4 | |-- # | '-- 5 '-- 3
Implementeu la següent funció:
/** * @brief Retorna el conjunt dels valors dels nodes d'un arbre * binari que estan a la profunditat `depth` * * @param t Arbre binari d'enters. * @param depth La profunditat dels nodes que es vol. * * @returns El conjunt de valors trobats a profunditat `depth` */ set<int> values_at_depth(BinTree<int> t, int depth);
Entrada
Cada cas consisteix en una representació textual d’un arbre binari d’enters i un enter que és una profunditat. (Aquesta lectura ja la fa el programa principal.)
Sortida
Per a cada cas, es mostra el conjunt de valors dels nodes, amb els valors ordenats, separats per espais, i delimitats per "{
" i "}
". (La sortida també la fa el programa principal.)
Observació
Els fitxers públics (icona del gatet) contenen:
bintree.hh | la classe BinTree |
bintree-io.hh | l’entrada/sortida de BinTree (format "visual") |
bintree-inline.hh | l’entrada/sortida de BinTree (format "inline") |
main.cc | el programa principal |
Makefile | per compilar amb make còmodament |
.vscode | configuració per compilar i debuggar amb VSCode |
Cal d’implementar values_at_depth
en un fitxer .cc
nou, compilar (està preparat per poder compilar i debuggar amb VSCode), i finalment enviar només el fitxer amb la funció.
Input
visual 3 |-- 6 '-- 6 2 1 |-- 4 | |-- # | '-- 2 '-- 5 |-- 8 '-- # 3 8 |-- 9 | |-- 4 | | |-- 9 | | '-- 7 | '-- 5 | |-- 1 | '-- 1 '-- # 4
Output
{ 6 } { 2 8 } { 1 7 9 }
Input
inline 22(12(12(27,25),30(31,37)),30(23(9,18),34(37,30))) 1 32(21(36(40,37),24(16,31)),37(29(27,5),31(36,5))) 2 4(22(7(31,39),19(13,8)),32(5(9,34),20(25,30))) 4 10(19(1(28,33),5(3,39)),38(32(37,11),28(29,16))) 4 37(26(20(3,30),4(20,8)),18(34(36,4),39(3,18))) 3 10(14(11(16,10),12(23,28)),13(18(38,32),21(36,39))) 2 25(19(34(14,32),22(21,25)),21(3(26,4),1(38,28))) 2 1(26(36(4,3),19(39,28)),27(18(29,15),39(13,11))) 4 30(33(38(21,14),6(31,19)),16(6(11,37),14(27,30))) 3 20(23(3(5,35),25(4,14)),38(27(6,6),23(33,38))) 1
Output
{ 22 } { 21 37 } { 8 9 13 25 30 31 34 39 } { 3 11 16 28 29 33 37 39 } { 4 20 34 39 } { 13 14 } { 19 21 } { 3 4 11 13 15 28 29 39 } { 6 14 38 } { 20 }