Python基本チュートリアル:Python実装ツリーの深さ優先トラバーサルと幅優先トラバーサルの詳細な説明

@この記事は、公開番号csdn2299から公開されています。公開番号プログラマアカデミーに注目して
ください。この記事では、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を勉強することに決めたとき、私はコンピューターの基礎がよくなかったことがわかりました。私は学問の資格を持っていませんでした。これは
何もすることはできません。埋め合わせるしかできないので、コーディング以外で自分の反撃を始めました。道は、Pythonのコア知識を学び続け、コンピューターの基礎の詳細な研究を整理し、平凡になりたくない場合は、コーディングに参加して成長してください!
実は、ここには技術だけでなく、それ以外のものもあり、例えば「絹糸」というよりも、どうやってプログラマーとして絶妙な存在になるのか、プログラマー自体が高貴な存在ですね。[参加するにはクリックしてください]自分らしくなりたい、高貴な人になりたい、是非!

公開された34のオリジナル記事 いいね12 訪問者20,000以上

おすすめ

転載: blog.csdn.net/chengxun03/article/details/105477085