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