spiffyscore

Hex Artifact Content
Login

Artifact 7aba067c30a34ede9640f22423deabbf436618bc:


0000: 69 6d 70 6f 72 74 20 70 64 62 0a 0a 63 6c 61 73  import pdb..clas
0010: 73 20 54 72 65 65 28 29 3a 0a 20 20 20 20 64 65  s Tree():.    de
0020: 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 29  f __init__(self)
0030: 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6e  :.        self.n
0040: 6f 64 65 73 20 3d 20 5b 5d 0a 0a 20 20 20 20 64  odes = []..    d
0050: 65 66 20 74 72 61 76 65 72 73 65 5f 64 65 70 74  ef traverse_dept
0060: 68 5f 66 69 72 73 74 28 73 65 6c 66 29 3a 0a 20  h_first(self):. 
0070: 20 20 20 20 20 20 20 61 6c 6c 5f 6e 6f 64 65 73         all_nodes
0080: 20 3d 20 5b 5d 0a 20 20 20 20 20 20 20 20 66 6f   = [].        fo
0090: 72 20 6e 6f 64 65 20 69 6e 20 73 65 6c 66 2e 6e  r node in self.n
00a0: 6f 64 65 73 3a 0a 20 20 20 20 20 20 20 20 20 20  odes:.          
00b0: 20 20 69 66 20 69 73 69 6e 73 74 61 6e 63 65 28    if isinstance(
00c0: 6e 6f 64 65 2c 20 4e 6f 64 65 29 3a 0a 20 20 20  node, Node):.   
00d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6c 6c               all
00e0: 5f 6e 6f 64 65 73 2e 61 70 70 65 6e 64 28 6e 6f  _nodes.append(no
00f0: 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  de).            
0100: 65 6c 69 66 20 69 73 69 6e 73 74 61 6e 63 65 28  elif isinstance(
0110: 6e 6f 64 65 2c 20 54 72 65 65 29 3a 0a 23 20 20  node, Tree):.#  
0120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 64                pd
0130: 62 2e 73 65 74 5f 74 72 61 63 65 28 29 0a 20 20  b.set_trace().  
0140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6c                al
0150: 6c 5f 6e 6f 64 65 73 2e 65 78 74 65 6e 64 28 6e  l_nodes.extend(n
0160: 6f 64 65 2e 74 72 61 76 65 72 73 65 5f 64 65 70  ode.traverse_dep
0170: 74 68 5f 66 69 72 73 74 28 29 29 0a 20 20 20 20  th_first()).    
0180: 20 20 20 20 72 65 74 75 72 6e 20 61 6c 6c 5f 6e      return all_n
0190: 6f 64 65 73 0a 0a 20 20 20 20 64 65 66 20 5f 5f  odes..    def __
01a0: 73 74 72 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20  str__(self):.   
01b0: 20 20 20 20 20 72 65 74 75 72 6e 20 73 74 72 28       return str(
01c0: 73 65 6c 66 2e 5f 5f 75 6e 69 63 6f 64 65 5f 5f  self.__unicode__
01d0: 28 29 29 0a 20 20 20 20 64 65 66 20 5f 5f 75 6e  ()).    def __un
01e0: 69 63 6f 64 65 5f 5f 28 73 65 6c 66 29 3a 0a 20  icode__(self):. 
01f0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65         return se
0200: 6c 66 2e 6e 6f 64 65 73 0a 0a 0a 63 6c 61 73 73  lf.nodes...class
0210: 20 4e 6f 64 65 28 29 3a 0a 20 20 20 20 64 65 66   Node():.    def
0220: 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20   __init__(self, 
0230: 70 61 72 65 6e 74 2c 20 64 61 74 61 29 3a 0a 20  parent, data):. 
0240: 20 20 20 20 20 20 20 73 65 6c 66 2e 70 61 72 65         self.pare
0250: 6e 74 20 3d 20 70 61 72 65 6e 74 0a 20 20 20 20  nt = parent.    
0260: 20 20 20 20 73 65 6c 66 2e 64 61 74 61 20 3d 20      self.data = 
0270: 64 61 74 61 0a 0a 20 20 20 20 64 65 66 20 5f 5f  data..    def __
0280: 73 74 72 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20  str__(self):.   
0290: 20 20 20 20 20 72 65 74 75 72 6e 20 73 74 72 28       return str(
02a0: 73 65 6c 66 2e 5f 5f 75 6e 69 63 6f 64 65 5f 5f  self.__unicode__
02b0: 28 29 29 0a 20 20 20 20 64 65 66 20 5f 5f 75 6e  ()).    def __un
02c0: 69 63 6f 64 65 5f 5f 28 73 65 6c 66 29 3a 0a 20  icode__(self):. 
02d0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65         return se
02e0: 6c 66 2e 64 61 74 61 0a                          lf.data.