Skip to content
Snippets Groups Projects
Commit a33f2f27 authored by Mamadu-lamarana Bah's avatar Mamadu-lamarana Bah :speech_balloon:
Browse files

updt insertion

parent b7801ac8
No related branches found
No related tags found
No related merge requests found
...@@ -15,38 +15,14 @@ class Btree() : ...@@ -15,38 +15,14 @@ class Btree() :
(Node([5, 25]), 1) (Node([5, 25]), 1)
>>> Btree(2, Node([12, 42], [Node([1]), Node([25]), Node([50])])).search(1) >>> Btree(2, Node([12, 42], [Node([1]), Node([25]), Node([50])])).search(1)
(Node([1]), 0) (Node([1]), 0)
True
>>> Btree(2, Node([12, 42], [Node([1]), Node([25]), Node([50])])).search(2) >>> Btree(2, Node([12, 42], [Node([1]), Node([25]), Node([50])])).search(2)
""" """
return self.root.search(value) return self.root.search(value)
# incomplet def insertion(self, value):
# def insertion(self, value): fini, milieu, g, d = self.root.insert(value)
# if (not fini):
# if (self.root == None): self.root = Node([milieu], [g, d])
# self.root = Bnode.Node(self.k)
# self.root.keys[0] = value
# else :
# if ( len(self.root) == self.k):
# new_root = Bnode.Node(self.k)
# new_root.childs[0] = self.root
#
# if (self) :
# ##TODO
# return None
# else:
# self.root.insert_not_full(value)
#
#def insertion(self,value):
# >>> Node([5,25]).insertion(10)
# Node([5,10,25])
# >>> Node([]).insertion(1)
# Node([1])
# >>> Node([5,25]).insertion(50)
# Node([5,25,50])
...@@ -70,4 +46,4 @@ class Btree() : ...@@ -70,4 +46,4 @@ class Btree() :
if __name__ == '__main__': if __name__ == '__main__':
import doctest import doctest
doctest.testmod(verbose=True) doctest.testmod(verbose=False)
\ No newline at end of file \ No newline at end of file
...@@ -39,47 +39,37 @@ class Node() : ...@@ -39,47 +39,37 @@ class Node() :
else : else :
return self.childs[index].search(value) return self.childs[index].search(value)
def insert(self, value, k): def insert(self, value):
""" """
>>> Node([5,15]).insert(12, 3) >>> Node([5,15]).insert(12)
Node([5,12,15]) (True, None, None, None)
>>> Node([5,15]).insert(20, 4) >>> Node([5]).insert(20)
Node([5,15,20]) (True, None, None, None)
>>> Node([12, 42], [Node([3,2])]).insert(1)
(True, None, None, None)
""" """
(node, index) = self.search(value) (found, index) = recherche_dichotomique(value, self.keys)
if (node == None) : if (not found) :
if (self.isLeaf()): if (self.isLeaf()):
self.keys.insert(index, value) self.keys.insert(index, value)
if ( len(self.keys) > self.k):
milieu, g, d = self.splitNode()
return False, milieu, g, d
return True, None, None, None
else: else:
(fini, milieu, g, d) = self.childs[index].insert(value, k) (fini, milieu, g, d) = self.childs[index].insert(value)
if (not fini) : if (not fini) :
self.keys.insert(index, milieu) self.keys.insert(index, milieu)
self.childs[index] = g self.childs[index] = g
self.childs.insert(index+1, d) self.childs.insert(index+1, d)
if ( len(self.keys) > self.k) :
milieu, g, d = self.splitNode()
return False, milieu, g, d
else :
return True, None, None, None
else :
# else : return True, None, None, None
# (fini, milieu, g, d) = self.childs[index].insert(value, k)
# if not fini:
# return None
# #TODO
# if (len(self.keys) > k) :
# (m, g, d) = self.splitNode()
# f = False
# else:
# return None
#TODO
# def splitNode(self) :
# parent = Node(self.k)
# m = self.keys[(len(self.node.keys))//2]
def splitNode(self) : def splitNode(self) :
""" """
>>> Node([10,20,25]).splitNode() >>> Node([10,20,25]).splitNode()
...@@ -90,41 +80,14 @@ class Node() : ...@@ -90,41 +80,14 @@ class Node() :
(5, Node([3]), Node([])) (5, Node([3]), Node([]))
""" """
milieu = len(self.keys) //2 milieu = len(self.keys) //2
parent = self.keys[milieu]
g = Node(self.keys[:milieu], self.childs[:milieu+1]) g = Node(self.keys[:milieu], self.childs[:milieu+1])
d = Node(self.keys[milieu+1:], self.childs[milieu+1:]) d = Node(self.keys[milieu+1:], self.childs[milieu+1:])
return (parent, g, d) return (self.keys[milieu], g, d)
def __repr__(self) : def __repr__(self) :
return f"Node({self.keys})" return f"Node({self.keys})"
#def getSizeNode() :
#def getPos() :
#def setNewChild() :
#def removeChild() :
#def isLeaf() :
if __name__ == '__main__': if __name__ == '__main__':
import doctest import doctest
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment