1 __author__ = "WSX" 2 3 class Node: 4 def __init__(self, val = None, left = None, right = None): 5 self.val = val 6 self.left = left 7 self.right = right 8 9 class tree: 10 def __init__(self, L): 11 self.val = L 12 13 def bulid(self,root, i): #將列表轉化創建二叉樹 14 if i < len(self.val): 15 root = Node(val = self.val[i]) 16 root.left = self.bulid(root.left, 2*i+1) 17 root.right = self.bulid(root.right, 2*i+2) 18 return root 19 return root 20 21 def preTraverse(self, tree_): 22 root = tree_ 23 if root: 24 print(root.val) 25 self.preTraverse(root.left) 26 self.preTraverse(root.right) 27 28 def midTraverse(self, tree_): 29 root = tree_ 30 if root: 31 self.preTraverse(root.left) 32 print(root.val) 33 self.preTraverse(root.right) 34 35 36 def postTraverse(self, tree_): 37 root = tree_ 38 if root: 39 self.preTraverse(root.left) 40 self.preTraverse(root.right) 41 print(root.val) 42 43 def cengci(self, tree_): 44 root = tree_ 45 queue = [root] #藉助隊列 46 while root and len(queue)!= 0: 47 print(queue[0].val) #visit 48 if queue[0].left: 49 queue.append(queue[0].left) 50 if queue[0].right: 51 queue.append(queue[0].right) 52 queue.pop(0) 53 54 T = tree(['1','2','3',"4","5","6"]) 55 root = T.bulid(Node(), 0) 56 print("preTraverse"); T.preTraverse(root) 57 print("postTraverse");T.postTraverse(root) 58 print("midTraverse");T.midTraverse(root) 59 print("cengci");T.cengci(root)