Question: python question: def comparison_total(bst): ------------------------------------------------------- Sums the comparison values of all Letter objects in bst. ------------------------------------------------------- Parameters: bst - a binary search tree of
python
question:
def comparison_total(bst): """ ------------------------------------------------------- Sums the comparison values of all Letter objects in bst. ------------------------------------------------------- Parameters: bst - a binary search tree of Letter objects (BST) Returns: total - the total of all comparison fields in the bst Letter objects (int) ----------
rest of functions:
def comparisons_get(file, bst): file.seek(0) for line in file: for c in line: if c.isalpha(): char = comparisonLetter(c.upper()) print(bst.retrieve(char)) line = file.readline().strip() return
class comparisonLetter:
def __init__(self, comparisonLetter): assert comparisonLetter.isalpha() and comparisonLetter.isupper(), "Invalid comparisonLetter"
self.comparisonLetter = comparisonLetter self.count = 0 self.comparisons = 0 return
def __str__(self): return "{}: {}, {}".format(self.comparisonLetter, self.count, self.comparisons)
def __eq__(self, rs): self.count += 1 self.comparisons += 1 result = self.comparisonLetter == rs.comparisonLetter return result
def __lt__(self, rs): self.comparisons += 1 result = self.comparisonLetter < rs.comparisonLetter return result
def __le__(self, rs): self.comparisons += 1 result = self.comparisonLetter <= rs.comparisonLetter return result
class BST:
def __init__(self): self._root = None self._count = 0 self ._comparsions = 0 return
def is_empty(self): return self._root is None
def __len__(self): return self._count def __comparisons__(self): return self._comparisons
def insert(self, dvalue): self._root, inserted = self._insert_aux(self._root, dvalue) return inserted
def _insert_aux(self, node, dvalue): if node is None: node = _BSTNode(dvalue) self._count += 1 inserted = True elif node._dvalue > dvalue: node._left, inserted = self._insert_aux(node._left, dvalue) elif node._dvalue < dvalue: node._right, inserted = self._insert_aux(node._right, dvalue) else: inserted = False
if inserted: node._update_height() return node, inserted
def retrieve(self, key): assert self._root is not None, "Cannot retrieve from an empty BST"
node = self._root dvalue = None
while node is not None and dvalue is None:
if node._dvalue > key: node = node._left elif node._dvalue < key: node = node._right elif node._dvalue == key: dvalue = deepcopy(node._dvalue) return dvalue,self.comparisons
mynode=BST() a= comparisons_get(file, bst) print("no of comparison for ",a)
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
