MCPcopy Create free account
hub / github.com/ActiveState/code / Node

Class Node

recipes/Python/577898_23_Tree/recipe-577898.py:55–213  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

53
54
55class Node(object):
56
57 def __init__(self, v = None, parent = None):
58 self.values, self.valcnt = None, 0
59 self.links, self.refcnt = None, 0
60 self.parent = parent
61 self.insertValue(v)
62
63 def __str__(self):
64 out = []
65 if self.values is not None:
66 for v in self.values:
67 if v is not None:
68 out.append(' %s ' % str(v))
69 return ''.join(out)
70 else: return 'empty'
71
72 def __iter__(self):
73 if self.values is not None:
74 for item in self.values:
75 yield item
76
77 def __getlink(self, a):
78 for idx in xrange(self.valcnt):
79 if idx is 0:
80 if a < self.values[idx]: return idx
81 else:
82 if self.values[idx - 1] < a < self.values[idx]: return idx
83 if idx == self.valcnt - 1: return idx + 1
84 return -1
85
86 def __addLink(self, link):
87 if self.links is None: self.links = [None] * 4
88 self.links[self.refcnt] = link
89 self.refcnt += 1
90
91 def __insertLink(self, idx, anotherNode):
92 if self.links is None: self.links = [None] * 4
93 if idx == 0:
94 self.links[0],self.links[1],self.links[2], self.links[3] = anotherNode,self.links[0],self.links[1], self.links[2]
95 elif idx == 1:
96 self.links[1], self.links[2], self.links[3] = anotherNode, self.links[1], self.links[2]
97 elif idx == 2:
98 self.links[2], self.links[3] = anotherNode, self.links[2]
99 else:
100 self.links[3] = anotherNode
101 self.refcnt += 1
102
103 def __removeLink(self, idx):
104 if idx == 0:
105 self.links[0], self.links[1], self.links[2], self.links[3] = self.links[1], self.links[2], self.links[3], None
106 elif idx == 1:
107 self.links[1], self.links[2], self.links[3] = self.links[2], self.links[3], None
108 elif idx == 2:
109 self.links[2], self.links[3] = self.links[3], None
110 else:
111 self.links[3] = None
112 self.refcnt -= 1

Callers 4

__init__Method · 0.70
__fixNodeInsertMethod · 0.70
insertValueMethod · 0.70
build_treeMethod · 0.50

Calls

no outgoing calls

Tested by

no test coverage detected