From 1475112de23b7b98bade483f4194b14230e1dd17 Mon Sep 17 00:00:00 2001 From: Mamadu Lamarana BAH <mamadulamarana.bah.etu@univ-lille.fr> Date: Thu, 28 Mar 2024 09:27:47 +0100 Subject: [PATCH] resol conflicts --- src/Node.py | 50 ++++++++++++++++++++++++-------------------------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/src/Node.py b/src/Node.py index c05ca3e..6c5fe0a 100644 --- a/src/Node.py +++ b/src/Node.py @@ -96,12 +96,12 @@ class Node() : (Node([50, 52]), 1) >>> node = Node([12, 42], [Node([2, 3]), Node([25]), Node([50])]) >>> node.insert(1, 2) - (False, 12, Node([2]), Node([42])) + (False, 12, Node([2], [Node([1]), Node([3])]), Node([42], [Node([25]), Node([50])])) >>> node.search(1) (Node([1]), 0) >>> node = Node([12, 42], [Node([2, 4], [Node([0, 1]), Node([3]), Node([7, 8])]), Node([25]), Node([50])]) >>> node.insert(6, 2) - (False, 12, Node([4]), Node([42])) + (False, 12, Node([4], [Node([2], [Node([0, 1]), Node([3])]), Node([7], [Node([6]), Node([8])])]), Node([42], [Node([25]), Node([50])])) >>> node = Node([12, 42], [Node([2, 3, 4]), Node([25]), Node([50])]) >>> node.insert(1, 3) @@ -159,33 +159,32 @@ class Node() : else: (ok) = self.childs[index].suppression(value, k, False) if (not ok): - if(index - 1 >= 0 and (len(self.childs[index-1].keys) >= k//2)): + if(index - 1 >= 0 and (len(self.childs[index-1].keys) - 1 >= k//2)): borrowed = self.childs[index-1].keys.pop() replaced = self.keys.pop(0) self.keys.insert(0, borrowed) self.childs[index].keys.insert(0, replaced) - elif(index + 1 < len(self.childs) and (len(self.childs[index+1].keys) >= k//2)): - borrowed = self.childs[index+1].keys.pop(0) + elif(index + 1 < len(self.childs) and (len(self.childs[index+1].keys) - 1 >= k//2)): + borrowed = self.childs[index+1].keys.pop() replaced = self.keys.pop() - self.keys.insert(len(self.keys), borrowed) - self.childs[index].keys.insert(len(self.childs), replaced) - - - return ok - - -# def suppr(self, value, k) : -# """ -# >>> a = Node([12, 42], [Node([3]), Node([25]), Node([50])]) -# >>> a.suppr(11) -# False -# """ -# found = self.search(value) -# if (found) : -# return None -# else : -# return False + self.childs[index].keys.insert(len(self.keys), borrowed) + self.childs[index].keys.insert(len(self.childs[index].keys), replaced) # len(self.childs) + else: + if(index-1 >= 0): + replaced = self.keys.pop(index-1) + borrowed = self.childs[index-1].keys.pop() + self.childs[index].keys.insert(len(self.childs[index].keys), replaced) + self.childs[index].keys.insert(0, borrowed) + del self.childs[index-1] + elif(index + 1 < len(self.childs)): + replaced = self.keys.pop(index) + borrowed = self.childs[index+1].keys.pop() + self.childs[index].keys.insert(0, borrowed) + self.childs[index].keys.insert(len(self.childs[index].keys), replaced) + del self.childs[index+1] + ok = not ok + return ok def splitNode(self) : """ @@ -220,8 +219,7 @@ class Node() : res.extend(self.childs[len(self.childs)-1].linearisation()) return res - - + def __repr__(self) : return (f"Node({self.keys}" + (f", {self.childs})" if len(self.childs) > 0 else ")")) @@ -229,4 +227,4 @@ class Node() : if __name__ == '__main__': import doctest - doctest.testmod(verbose=False) + doctest.testmod(verbose=False) \ No newline at end of file -- GitLab