La función que muestran en el video es muy útil, pero solamente encuentra el primer elemento que coincide con lo que buscamos. Por ejemplo, si en el árbol por alguna razón tenemos el elemento "8" dos veces, la función del video solamente nos va a mostrar que la primer coincidencia que encuentre. Les dejo una función que en lo personal me gusta usar más, muestra el nivel del nodo a buscar y la dirección de memoria, espero les sirva: void buscarArbol(Nodo* nodo, int contador, int n, int coincidencia){ if(nodo == NULL){ if(contador == 0){ cout
eh wacho. sos un geño. Entendí todo. Tenés algún video donde diga cómo equilibrar los nodos, para que el nodo raíz se vaya corriendo según se agreguen o quiten nodos?
Eso es de AVL, no cubre ese tema, esto es solo ABB . Te hago la aclaratoria a ti y al que este leyendo esto porque Alejandro lamentablemente ya no esta entre nosotros
Si quieren hacer que su busqueda les diga exactamente en qué posición se encuentra el nodo, aquí está! //Buscar Nodo bool BuscarNodo(Nodo *&arbol, int n){ if(arbol == NULL){ return false; } else if(arbol->dato == n){//El nodo actual es igual al nodo que se busca, Encuentra el nodo if(arbol->padre == NULL){//El nodo es la raiz coutdato){//el nodo se encuentra a la izquierda del padre cout
Amigo que tal, veo que ya no mucha gente llego a comentar estos vídeos, bueno quería consultarte si es necesario poner return busqueda(arbol->izq,n); o return busqueda(arbol->der,n); , esto lo menciono ya que en el caso de que no se encuentre el valor y si se encuentra el valor ya hay un "return", osea lo veo como que esta demás. Pd: Lo probé en mi código sin esos dos return, solo la función obviamente, y me dio sin problemas.
Los return sirven para que la función te devuelva true o false en caso de que el elemento haya sido encontrado o no, pero si el programa funciona sin ellos, vale la pena ahorrar caracteres
Hola, solo tengo una pregunta, porque para llamar otra vez a la funciones dentro de si mismas antes se usa return? por ejemplo return busqueda(arbol->der,n); por que no solo seria busqueda(arbol->der,n); edit: acabo de probar compilar el programa sin el return y compilo y se comporto de manera perfecta, si alguien me explica cual es la funcion del return ahi, gracias.
Por que es una funcion recursiva de Tipo Void por lo cual solo retornora Un procedimiento a retornar A cambio la Funcion del video es de tipo Bool por lo cual debera retornar un dato Boolean...Las funciones recursivas en si son un solo poco misteriosas :D
Es algo complicado, pero ese return te devuelve el valor que la función busqueda devuelve, entonces si en la función busqueda encuentra el valor, retorna un verdadero a donde fue llamado, entonces ese valor te lo retorna, si no pones return entonces ese true solo estará allí sin utilizar
Yo iba hacer la misma pregunta.. tambien me quedo esa duda. En este caso retornar a la funcion o llamar la funcion parece tener el mismo comportamiento.
@@harlesepc5906 lo que yo entiendo es que con la recursividad se busca llegar al siguiente valor, y al siguiente ya sea Nodo izquierda o derecha no entiendo el return tampoco. Ya que al llamarse la función se hará todo de nuevo ( con el valor de izquierda o derecha) va a comparar y en caso de encontrarlo dirá true.
💻 Apúntate al curso completo de Programación en C++:
Hotmart: hotmart.com/es/marketplace/productos/programacion-en-c-v0ivo/N78682741H
He aprendido mucho de tí Alejandro, eres un genio estés donde estés. gracias por todo hasta el infinito!!!
Ya estuvo que si acabe mi proyecto, gracias por todo, que pena que ya no estes.
veo todos tus videos bro, eres lo maximo
Excelentes explicaciones, tus vídeos me han ayudado mucho, gracias!
Gracias a ti por ver Daniela :) Un saludo
La función que muestran en el video es muy útil, pero solamente encuentra el primer elemento que coincide con lo que buscamos. Por ejemplo, si en el árbol por alguna razón tenemos el elemento "8" dos veces, la función del video solamente nos va a mostrar que la primer coincidencia que encuentre. Les dejo una función que en lo personal me gusta usar más, muestra el nivel del nodo a buscar y la dirección de memoria, espero les sirva:
void buscarArbol(Nodo* nodo, int contador, int n, int coincidencia){
if(nodo == NULL){
if(contador == 0){
cout
Gracias por todo!
No sabes cuánta falta nos haces 🥺
de verdad, MIL GRACIAS !
eh wacho. sos un geño. Entendí todo. Tenés algún video donde diga cómo equilibrar los nodos, para que el nodo raíz se vaya corriendo según se agreguen o quiten nodos?
Eso es de AVL, no cubre ese tema, esto es solo ABB . Te hago la aclaratoria a ti y al que este leyendo esto porque Alejandro lamentablemente ya no esta entre nosotros
TE AMO, AUNQUE YA NO ESTES AQUI
3:46 epico
Si quieren hacer que su busqueda les diga exactamente en qué posición se encuentra el nodo, aquí está!
//Buscar Nodo
bool BuscarNodo(Nodo *&arbol, int n){
if(arbol == NULL){
return false;
}
else if(arbol->dato == n){//El nodo actual es igual al nodo que se busca, Encuentra el nodo
if(arbol->padre == NULL){//El nodo es la raiz
coutdato){//el nodo se encuentra a la izquierda del padre
cout
que diosito te lo pague :D
que diosito te lo pague :D x2
Video buen explicado y bastante útil, cecyt 14,4IV6,Carlos Mendoza
Amigo que tal, veo que ya no mucha gente llego a comentar estos vídeos, bueno quería consultarte si es necesario poner return busqueda(arbol->izq,n); o return busqueda(arbol->der,n); , esto lo menciono ya que en el caso de que no se encuentre el valor y si se encuentra el valor ya hay un "return", osea lo veo como que esta demás.
Pd: Lo probé en mi código sin esos dos return, solo la función obviamente, y me dio sin problemas.
Los return sirven para que la función te devuelva true o false en caso de que el elemento haya sido encontrado o no, pero si el programa funciona sin ellos, vale la pena ahorrar caracteres
@@Ricardo-tn5tl me preguntaba para que funcionaban porque están ahí pero realmente probe sin ellos y me funciono todo.
hola, necesito ayuda sobre como encontarr una palabra en un texto con busqueda binaria
Esto es búsqueda en profundidad?
Alguien que pase el codigo que hizo ese master
Hola, solo tengo una pregunta, porque para llamar otra vez a la funciones dentro de si mismas antes se usa return? por ejemplo return busqueda(arbol->der,n);
por que no solo seria busqueda(arbol->der,n);
edit: acabo de probar compilar el programa sin el return y compilo y se comporto de manera perfecta, si alguien me explica cual es la funcion del return ahi, gracias.
Por que es una funcion recursiva de Tipo Void por lo cual solo retornora Un procedimiento a retornar A cambio la Funcion del video es de tipo Bool por lo cual debera retornar un dato Boolean...Las funciones recursivas en si son un solo poco misteriosas :D
Es algo complicado, pero ese return te devuelve el valor que la función busqueda devuelve, entonces si en la función busqueda encuentra el valor, retorna un verdadero a donde fue llamado, entonces ese valor te lo retorna, si no pones return entonces ese true solo estará allí sin utilizar
Yo iba hacer la misma pregunta.. tambien me quedo esa duda. En este caso retornar a la funcion o llamar la funcion parece tener el mismo comportamiento.
@@harlesepc5906 lo que yo entiendo es que con la recursividad se busca llegar al siguiente valor, y al siguiente ya sea Nodo izquierda o derecha no entiendo el return tampoco. Ya que al llamarse la función se hará todo de nuevo ( con el valor de izquierda o derecha) va a comparar y en caso de encontrarlo dirá true.
y como podria contar los nodos de un arbol?
void contarNodos(Nodo *raiz, int &contador){
if(raiz == NULL){
}
else{
contador++;
contarNodos(raiz->izq, contador);
contarNodos(raiz->der, contador);
}
}
int main(){
int cont=0;
if(raiz == NULL)
cout
Se que es tarde pero es simple colocas un contador auxiliar que aumenta en uno por cada vez que ingresas un dato en arbol