二叉树

 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()


原文地址:https://www.cnblogs.com/cx59244405/p/8471518.html