mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-03-30 18:36:43 +00:00
Updated delete function
This commit is contained in:
parent
b867de8159
commit
0abdf5bbc6
@ -150,7 +150,7 @@ def rl_rotation(node: MyNode) -> MyNode:
|
|||||||
def insert_node(node: MyNode | None, data: Any) -> MyNode | None:
|
def insert_node(node: MyNode | None, data: Any) -> MyNode | None:
|
||||||
if node is None:
|
if node is None:
|
||||||
return MyNode(data)
|
return MyNode(data)
|
||||||
if data == node.get_data(): # No duplicates allowed
|
if data == node.get_data():
|
||||||
return node
|
return node
|
||||||
if data < node.get_data():
|
if data < node.get_data():
|
||||||
node.set_left(insert_node(node.get_left(), data))
|
node.set_left(insert_node(node.get_left(), data))
|
||||||
@ -165,7 +165,7 @@ def insert_node(node: MyNode | None, data: Any) -> MyNode | None:
|
|||||||
node = right_rotation(node)
|
node = right_rotation(node)
|
||||||
else:
|
else:
|
||||||
node = lr_rotation(node)
|
node = lr_rotation(node)
|
||||||
elif data > node.get_data():
|
else:
|
||||||
node.set_right(insert_node(node.get_right(), data))
|
node.set_right(insert_node(node.get_right(), data))
|
||||||
if get_height(node.get_right()) - get_height(node.get_left()) == 2:
|
if get_height(node.get_right()) - get_height(node.get_left()) == 2:
|
||||||
right_child = node.get_right()
|
right_child = node.get_right()
|
||||||
@ -216,7 +216,7 @@ def get_min_value_node(node: MyNode) -> MyNode:
|
|||||||
|
|
||||||
def del_node(root: MyNode | None, data: Any) -> MyNode | None:
|
def del_node(root: MyNode | None, data: Any) -> MyNode | None:
|
||||||
if root is None:
|
if root is None:
|
||||||
print("Nothing to delete")
|
print(f"{data} not found in the tree")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
if root.get_data() > data:
|
if root.get_data() > data:
|
||||||
@ -287,7 +287,7 @@ class AVLtree:
|
|||||||
*************************************
|
*************************************
|
||||||
>>> t.get_height()
|
>>> t.get_height()
|
||||||
2
|
2
|
||||||
>>> t.del_node(3)
|
>>> t.delete(3)
|
||||||
delete:3
|
delete:3
|
||||||
>>> print(str(t).replace(" \\n","\\n").replace(" \\n","\\n"))
|
>>> print(str(t).replace(" \\n","\\n").replace(" \\n","\\n"))
|
||||||
4
|
4
|
||||||
@ -305,7 +305,7 @@ class AVLtree:
|
|||||||
print("insert:" + str(data))
|
print("insert:" + str(data))
|
||||||
self.root = insert_node(self.root, data)
|
self.root = insert_node(self.root, data)
|
||||||
|
|
||||||
def del_node(self, data: Any) -> None:
|
def delete(self, data: Any) -> None:
|
||||||
print("delete:" + str(data))
|
print("delete:" + str(data))
|
||||||
if self.root is None:
|
if self.root is None:
|
||||||
print("Tree is empty!")
|
print("Tree is empty!")
|
||||||
@ -364,5 +364,5 @@ if __name__ == "__main__":
|
|||||||
print(str(t))
|
print(str(t))
|
||||||
random.shuffle(lst)
|
random.shuffle(lst)
|
||||||
for i in lst:
|
for i in lst:
|
||||||
t.del_node(i)
|
t.delete(i)
|
||||||
print(str(t))
|
print(str(t))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user