Luego de consultar especialistas en la materia, programadores de deferentes ramas y profesores hemos dado con la solución al dilema y la plasmamos en este post.
Ejemplo: recorrido vertical de un árbol binario
/* This is just a function of vertical traversal of binary tree. You need to
write required code. Thank you. */// Class to store node and it's distance from parent.classObjpublic:
Node *root;int dis;Obj(Node *node,int dist)
root = node;
dis = dist;;// Main logic of vertical traversal.voidverticalTraversal(Node *root)
queue<Obj*> q;
Obj *ob =newObj(root,0);
q.push(ob);
map<int, vector<int>> m;while(!q.empty())
Obj *ob = q.front();
q.pop();if(m.find(ob->dis)!= m.end())
m[ob->dis].push_back(ob->root->data);else
vector<int> v;
v.push_back(ob->root->data);
m[ob->dis]= v;if(ob->root->left !=NULL)
q.push(newObj(ob->root->left, ob->dis-1));if(ob->root->right !=NULL)
q.push(newObj(ob->root->right, ob->dis+1));for(auto it=m.begin(); it!=m.end(); it++)
vector<int> v1 =(*it).second;for(int j =0; j<v1.size(); j++)
cout << v1[j]<<"t";
cout << endl;
Sección de Reseñas y Valoraciones
Si te ha sido de provecho nuestro post, sería de mucha ayuda si lo compartes con el resto seniors y nos ayudes a extender nuestro contenido.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)