本論文では、深さ優先探索と幅優先トラバーサルツリーパイソン達成の例を説明します。以下のように、ご参考のためにあなたに共有します:
幅優先(階層トラバーサル)
ツリーのルートノードを出発して、全体を通って左から右へ、上から下にツリー
数とバイナリツリーとの間の差は、バイナリツリーは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プログラマの技術のタイミングを説明、および方法は、細部に注意を払う必要があるいくつかの学習を共有します