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
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
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étails