Diremos que un BinTree<char> T representa una palabra word, formada por los caracteres c1c2… cn, con n≥ 0, si hay un camino en el árbol comenzando desde la raíz y de longitud n 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
Observación
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