Este documento describe ejemplos de recorrido en profundidad y amplitud-primer árbol transversal pitón lograr. Compartir con usted para su referencia, de la siguiente manera:
Primero en amplitud (jerarquía traversal)
A partir del nodo raíz del árbol, el árbol de arriba a abajo, de izquierda a derecha a través de toda la
diferencia entre el número y el árbol binario es el árbol binario es de sólo dos nodos
Amplitud-primer orden: A - B - C - D - E - F - G - H - I
la implementación del código
def breadth_travel(self, root):
"""利用队列实现树的层次遍历"""
if root == None:
return
queue = []
queue.append(root)
while queue:
node = queue.pop(0)
print node.elem,
if node.lchild != None:
queue.append(node.lchild)
if node.rchild != None:
queue.append(node.rchild)
Primero en profundidad
Hay tres algoritmo primero en profundidad: preorden de recorrido, en el recorrido de orden, orden posterior
preorden recorrido de la orden anterior, primero visitamos la raíz, a continuación, de forma recursiva preorden visita el subárbol izquierdo, luego el acceso de forma recursiva preorden subárbol derecho
Root -> subárbol izquierdo -> subárbol derecho
#实现 1
def preorder(self, root):
"""递归实现先序遍历"""
if root == None:
return
print root.elem
self.preorder(root.lchild)
self.preorder(root.rchild)
#实现 2
def depth_tree(tree_node):
if tree_node is not None:
print (tree_node._data)
if tree_node._left is noe None:
return depth_tree(tree_node._left)
if tree_node._right is not None:
return depth_tree(tree_node._right)
Con el fin de recorrido en preorden, utilizamos una visita preorden recursiva el subárbol izquierdo, luego visitar el nodo raíz, y, finalmente, el uso del acceso preorden recursiva subárbol derecho
subárbol izquierdo -> root -> subárbol derecho
def inorder(self, root):
"""递归实现中序遍历"""
if root == None:
return
self.inorder(root.lchild)
print root.elem
self.inorder(root.rchild)
Después de atravesar el orden en orden posterior, hemos recorrido secuencia recursiva primero después de su uso para acceder al sub-árbol izquierdo y subárbol derecho, raíz última visita
subárbol izquierdo -> subárbol derecho -> root
def postorder(self, root):
"""递归实现后续遍历"""
if root == None:
return
self.postorder(root.lchild)
self.postorder(root.rchild)
print root.elem
El contenido de más de cuántos, y finalmente a recomendar una buena reputación en el número de instituciones públicas [programadores], hay una gran cantidad de veteranos habilidades de aprendizaje, experiencia, habilidades de la entrevista, la experiencia laboral y otra cuota de aprendizaje, cuanto más cuidadosamente preparado el basado en cero información introductoria sobre los datos reales del proyecto todos los días para explicar la sincronización de la tecnología de los programadores de Python, y compartir algo de aprendizaje métodos tienen que prestar atención a los pequeños detalles