Diremos que un BinTree<char> T
representa una palabra word, formada por los caracteres
,
con
,
si hay un camino en el árbol comenzando desde la raíz y de longitud
tal que los valores de los nodos del camino forman word.
Implementad eficientemente la función count_word_in_paths,
especificada a continuación:
/**
* @pre `word` tiene al menos una letra
* @post se retorna el número de caminos en T que representan
* la palabra word desde la raíz
*/
int count_word_in_paths(const vector<char>& word, const BinTree<char>& T);
Por ejemplo, para la palabra "dia" si el árbol es
t1, el resultado es 0, si el árbol es t2 el
resultado es 3 y si el árbol es t3 el resultado es 1.
t1 = d t2 = d t3 = d
/ \ / \ / \
d d i i i i
/ \ / / \ / \
w i a a a a b
/ \ /
k a r
Solo es necesario que enviéis el código de la función en un archivo
.cc, en el icono del gatito tenéis un .tar
para poder compilar y probar vuestra solución.
count_word_in_paths("a", "a(b,)") → 1 count_word_in_paths("ab", "a(b,)") → 1 count_word_in_paths("abc", "a(b,)") → 0 count_word_in_paths("abc", "a(b(c,x),b(y,c))") → 2 count_word_in_paths("abc", "a(b,c(d,))") → 0