python programmation de base: python réaliser la profondeur d'abord l'arbre et traversal en largeur Commentaires traversal

Le présent document décrit des exemples de la profondeur et la largeur première traversal python-premier arbre traversal atteindre. Partager vous pour votre référence, comme suit:

Largeur d'abord (hiérarchie traversal)

À partir de noeud de racine de l'arbre, l'arbre de haut en bas de gauche à droite à travers la totalité de la
Insérer ici l'image Description
différence entre le nombre et l'arbre binaire est l'arbre binaire est seulement d' environ deux noeuds

Largeur d'abord l'ordre: A - B - C - D - E - F - G - H - I

code mise en œuvre

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)

Profondeur d'abord

Il y a trois profondeur premier algorithme: pré - commande traversal, dans l' ordre traversal, postorder
Insérer ici l'image Description
précommande traversal de l'ordre plus tôt, nous avons d' abord visiter la racine, puis visite récursive pré - commande le sous - arbre gauche, puis récursive pré - commande l' accès sous - arbre droit

Root -> sous-arbre gauche -> sous-arbre droit

#实现 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)

Pour en précommande traversal, nous utilisons une visite de pré-commande récursive la sous-arborescence à gauche, puis visitez le nœud racine, et enfin l'utilisation d'un accès récursive précommande sous-arbre droit

sous-arbre gauche -> root -> sous-arbre droit

def inorder(self, root):
   """递归实现中序遍历"""
   if root == None:
     return
   self.inorder(root.lchild)
   print root.elem
   self.inorder(root.rchild)

Après ordre traversal en postorder, nous avons séquence traversal récursive après utilisation pour accéder à la sous-arbre gauche et à droite sous-arbre, racine dernière visite

sous-arbre gauche -> sous-arbre droit -> root

def postorder(self, root):
   """递归实现后续遍历"""
   if root == None:
     return
   self.postorder(root.lchild)
   self.postorder(root.rchild)
   print root.elem

Le contenu de plus de combien, et enfin de recommander une bonne réputation dans le nombre d'institutions publiques [programmeurs], il y a beaucoup de voitures anciennes compétences d'apprentissage, l'expérience d'apprentissage, les techniques d'entrevue, l'expérience en milieu de travail et d'autres part, plus nous avons soigneusement préparé la base zéro informations d'introduction sur les données réelles du projet chaque jour pour expliquer le timing de la technologie des programmeurs Python et partager des méthodes d'apprentissage doivent faire attention aux petits détailsInsérer ici l'image Description

Publié six articles originaux · louanges gagnées 0 · Vues 8

Je suppose que tu aimes

Origine blog.csdn.net/chengxun02/article/details/104976398
conseillé
Classement