Python - Traversal de orden de nivel usando la cola de DICT VS -- python campo con time-complexity campo con tree-traversal campo con breadth-first-search camp Relacionados El problema

Python - level order traversal using dict vs queue


0
vote

problema

Español

Mi comprensión de Algo & Amp; DS es un poco novicio. Y no estoy seguro de si esto es una pregunta duplicada o relacionada o, si es completamente trivial. Dondequiera que veo un recorrido de orden de nivel o BFS que se menciona, veo una cola usada. No puedo entender las complejidades de eso, en términos de espacio y, lo que es más importante, la complejidad de tiempo , contra mi implementación usando diccionario .

  def getLevelElements(tree, level=0, cont={}):     """Get mapping of level and elements in a level     :param tree: Input tree, ex.         1             2                 4                 5                     8                     9             3                 6                 7                     10                     None     :return: {0: [1], 1: [2, 3], 2: [4, 5, 6, 7], 3: [8, 9, 10]}     """     if tree is not None:         cont.setdefault(level, []).append(tree.root)     if tree.leftChild is not None:         getLevelElements(tree.leftChild, level + 1, cont)     if tree.rightChild is not None:         getLevelElements(tree.rightChild, level + 1, cont)     return cont   def levelOrderTraversalOut(tree):     levelElementsMap = getLevelElements(tree)     out = []     for elements in levelElementsMap.values():         out += elements     return out   

Mi requisito es obtener elementos de árbol en una lista con un recorrido de orden de nivel.

Original en ingles

My understanding of Algo & DS is a bit novice. And I'm not sure if this is a duplicate or related question or if completely trivial. Wherever I see level order traversal or BFS being mentioned I see a queue used. I'm not able to understand the intricacies of that, in terms of space and more importantly time complexity, against my implementation using dictionary.

def getLevelElements(tree, level=0, cont={}):     """Get mapping of level and elements in a level     :param tree: Input tree, ex.         1             2                 4                 5                     8                     9             3                 6                 7                     10                     None     :return: {0: [1], 1: [2, 3], 2: [4, 5, 6, 7], 3: [8, 9, 10]}     """     if tree is not None:         cont.setdefault(level, []).append(tree.root)     if tree.leftChild is not None:         getLevelElements(tree.leftChild, level + 1, cont)     if tree.rightChild is not None:         getLevelElements(tree.rightChild, level + 1, cont)     return cont   def levelOrderTraversalOut(tree):     levelElementsMap = getLevelElements(tree)     out = []     for elements in levelElementsMap.values():         out += elements     return out 

My requirement is to get elements of tree in a list using level order traversal.

           

Lista de respuestas

3
 
vote
vote
La mejor respuesta
 

Si te entiendo bien, necesita un orden BFS de elementos del árbol. Sugeriría algo así:

  BETWEEN '2015-11-05' AND '2017-02-02'9  
 

If I understand you right, you need a BFS-order of elements of the tree. I would suggest smth like this:

def bfs(tree):     out = []     elements = [tree.root]     while elements:         elem = elements.pop(0)         out.append(elem)         if elem.leftChild:             elements.append(elem.leftChild)         if elem.rightChild:             elements.append(elem.rightChild)     return out 
 
 
   
   

Relacionados problema

1  BFS Performance en la búsqueda de la ruta más corta  ( Bfs performance in searching shortest path ) 
Hay un gráfico con hasta 10 000 nodos y cada nodo puede tener hasta 4 nodos adyacentes . El gráfico es sin peso y no dirigido. la tarea es encontrar l...

0  Hashset contiene copia del objeto  ( Hashset contains copy of object ) 
Tengo un objeto de punto de clase con los miembros x e y. Quiero verificar si un objeto de punto está en mi hashset 'visitado', pero cuando verifico, creo un ...

17  ¿Cómo imprimiría los datos en un árbol binario, nivelado por nivel, comenzando en la parte superior?  ( How would you print out the data in a binary tree level by level starting at t ) 
Esta es una pregunta de entrevista Pienso en una solución. Utiliza la cola. public Void BFS() { Queue q = new Queue(); q.Enqueue(root); ...

-1  Error de SigSegv con algoritmo BFS  ( Sigsegv error with bfs algorithm ) 
Tengo un error de algoritmo BFS. Han intentado depurar con el gdb pero no entiendo por qué entiendo esto. ¿Puede alguien decirme por qué obtengo un error ...

6  ¿Cómo convierto una lista de una lista monádica a una búsqueda de primeras?  ( How do i convert a list monadic function to a breadth first search ) 
Acabo de superar la joroba de averiguar cómo usar la lista de Monad para hacer computaciones no determinísticas. Sin embargo, creo que mi algoritmo se benefic...

1  ¿Cuál es la cantidad total de secuencias de Travesals de DFS y BFS para un gráfico?  ( What is the total number of dfs and bfs travesals sequences possible for a graph ) 
¿Hay una fórmula generalizada? ¿Cuál será la forma más eficiente de contar las secuencias de DFS / BFS total para un gráfico? ...

9  BFS en la matriz de adyacencia  ( Bfs on adjacency matrix ) 
Estoy tratando de implementar un BFS en la matriz de adyacencia de un gráfico sin peso indirecto que devuelve el número de nodos visitados. He llegado a esto ...

1  Encontrar un ciclo en un gráfico dirigido usando BFS o DFS  ( Finding a cycle in a directed graph using bfs or dfs ) 
Intenté mirar alrededor de Internet, pero estoy un poco atascado en este momento con respecto a modificar el algoritmo BFS o DFS para poder encontrar un ciclo...

0  ¿Qué significa este fragmento de código en la matriz variable de los niños?  ( What does this snippet of code in the children variable array mean ) 
def breadth_first_search(adj_matrix, source_index, end_index) node_queue = [source_index] puts "#{source_index} stored into queue " loop do curr_...

38  ¿Cómo implementan un primer traverso de una amplitud?  ( How do implement a breadth first traversal ) 
Esto es lo que tengo. ¡Pensé que el pre-pedido era el mismo y lo mezclé con la profundidad primero! import java.util.LinkedList; import java.util.Queue; p...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos