二叉树
1 class Node(object): 2 def __init__(self,sName): 3 self._lChildren = [] 4 self.sName = sName 5 def __repr__(self): 6 return "<Node '{}'>".format(self.sName) 7 def append(self,*args,**kwargs): 8 self._lChildren.append(*args,**kwargs) 9 #深度遍历 10 def print_all_1(self): 11 print(self) 12 for oChild in self._lChildren: 13 oChild.print_all_1() 14 #广度遍历 15 def print_all_2(self): 16 def gen(o): 17 lAll = [o,] 18 while lAll: 19 oNext = lAll.pop(0) 20 lAll.extend(oNext._lChildren) 21 yield oNext 22 for oNode in gen(self): 23 print(oNode) 24 25 oRoot = Node("root") 26 oChild1 = Node("child1") 27 oChild2 = Node("child2") 28 oChild3 = Node("child3") 29 oChild4 = Node("child4") 30 oChild5 = Node("child5") 31 oChild6 = Node("child6") 32 oChild7 = Node("child7") 33 oChild8 = Node("child8") 34 oChild9 = Node("child9") 35 oChild10 = Node("child10") 36 37 #向二叉树中加入节点 38 oRoot.append(oChild1) 39 oRoot.append(oChild2) 40 oRoot.append(oChild3) 41 oChild1.append(oChild4) 42 oChild1.append(oChild5) 43 oChild2.append(oChild6) 44 oChild4.append(oChild7) 45 oChild3.append(oChild8) 46 oChild3.append(oChild9) 47 oChild6.append(oChild10) 48 #深度优先 49 oRoot.print_all_1() 50 #广度优先 51 oRoot.print_all_2()