基本的なプログラミングのpython:Pythonは木の深さ優先探索と幅優先トラバーサルコメントを実現

本論文では、深さ優先探索と幅優先トラバーサルツリーパイソン達成の例を説明します。以下のように、ご参考のためにあなたに共有します:

幅優先(階層トラバーサル)

ツリーのルートノードを出発して、全体を通って左から右へ、上から下にツリー
ここに画像を挿入説明
数とバイナリツリーとの間の差は、バイナリツリーは2つのだけのノードについてです

幅優先順:A - B - C - D - E - F - G - H - I

コードの実装

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)

深さ優先

3深さ優先探索アルゴリズムがあります。前順トラバーサル、順トラバーサルで、後順
ここに画像を挿入説明
先行順トラバーサル早いため、我々はまず、ルートを訪問、その後再帰的行きがけ左サブツリーを訪れるのは、再帰的に前順アクセス右部分木

ルート - >左のサブツリー - >右部分木

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

行きがけにあるためトラバーサルでは、ルートノードを訪問し、その後、左のサブツリーを訪問し、再帰的な先行順アクセス権サブツリーの最後に使用再帰前順を使用します

左サブツリー - >ルート - >右部分木

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

後順での順序トラバーサルの後、左の部分木と右のサブツリーにアクセスするために使用した後、私たち最初の再帰的なトラバース順序、ルートの最後の訪問

左サブツリー - >右部分木 - >ルート

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

、そして最終的に公共機関[プログラマ]の数では良い評判をお勧めする方法多くのより多くのコンテンツ、古いタイマー、スキルを学習体験、インタビューのスキル、職場体験や他のシェアを学習がたくさんある、より多くの我々は慎重に準備ゼロベース毎日、実際のプロジェクトデータの入門情報は、Pythonプログラマの技術のタイミングを説明、および方法は、細部に注意を払う必要があるいくつかの学習を共有しますここに画像を挿入説明

リリース6元記事 ウォンの賞賛0 ビュー8

おすすめ

転載: blog.csdn.net/chengxun02/article/details/104976398