1. 程式人生 > >python 二叉樹遍歷 DFS和BFS

python 二叉樹遍歷 DFS和BFS

檢查python 版本

import sys  
print(sys.version)   
print(sys.version_info )
  • mac
    python 自己寫的資料結構在 Documents/data_structure/python中
    Documents/data_structure/cpp/LeetCode
    sublime annaconda 3.6.5
    pycharm /usr/local/Cellar/python3/3.6.1

  • linux機器

給出樹的節點

class TreeNode:
    def __init__(self,x):
        self.val=x
        self.left=None
        self.right=None

題目

輸入:
###          A
#        /        \
#     B            C
#   /  \          /  \
#  D     E      F     G
#       /        \
#      H           I
輸出:     
# LayerOrder: 
# A 
# BC 
# DEFG 

樹的結構儲存

python中如何儲存樹?

BFS 廣度優先遍歷

BFS用到的資料結構是quene

def bfs(self,root): # 傳入樹的根節點
    quene=[] 
    q.append(root) 
    while len(q)!=0:
        every_layer=[]
        length=len(q)
        for i in range(length):
            r=q.pop(0) 
            if not r.left is None: 
               q.append(r.left)
            if not r.right is None:
               q.append(r.right)
            every_layer.append(r.val)
        print every_layer
        print ' '
        result.append(every_layer)