pitón programación básica: Pitón de realizar el recorrido en profundidad árbol y en amplitud de recorrido Comentarios

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
Aquí Insertar imagen Descripción
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
Aquí Insertar imagen Descripción
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 detallesAquí Insertar imagen Descripción

Publicado seis artículos originales · ganado elogios 0 · Vistas 8

Supongo que te gusta

Origin blog.csdn.net/chengxun02/article/details/104976398
Recomendado
Clasificación