其实之前我已经写过一篇关于广度优先的文章了,链接如下。
广度优先是借助了队列,在二叉树中广度优先又叫层次遍历。(??是不是啊?反正目前的我就是这么理解的,如果有错,容我后期改正,喵喵)
多余的话不再说,只是把代码 copy 一下。(PS:现在我好累啊,真他喵的累)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
   | class Node:  	def __init__(self,k): 		self.k = k 		self.l = None 		self.r = None
  class Tree:  	def __init__(self): 		self.root = None
  	def add(self,key):		 		node = Node(key) 		if self.root is None: 			self.root = node 		else: 			q = [self.root] 			 			while True: 				p = q.pop(0)
  				if p.l is None: 					p.l = node 					return 				elif p.r is None: 					p.r = node 					return 				else: 					q.append(p.l) 					q.append(p.r) 					 	def levelOrder(self):   		l = []              		last = None 		nlast = None 		l.append(self.root) 		while(len(l) != 0): 			node = l.pop(0) 			print(node.k,end = "") 			if not (node.l is None): 				nlast = node.l 				l.append(node.l) 			if not(node.r is None): 				nlast = node.r 				l.append(node.r) 			last = nlast 			if last == node: 					print('\n')
   |