From 0387f5ebbad871fdd7002f8c631b52ecc3cda680 Mon Sep 17 00:00:00 2001 From: A N U S H <54374648+anushkrishnav@users.noreply.github.com> Date: Mon, 10 Aug 2020 12:32:42 +0530 Subject: [PATCH 1/4] Implemented static type checking to avl_tree.py --- data_structures/binary_tree/avl_tree.py | 62 +++++++++++++------------ 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/data_structures/binary_tree/avl_tree.py b/data_structures/binary_tree/avl_tree.py index c6a45f1cbeb7..d7c9601a58dc 100644 --- a/data_structures/binary_tree/avl_tree.py +++ b/data_structures/binary_tree/avl_tree.py @@ -11,15 +11,15 @@ class my_queue: - def __init__(self): - self.data = [] + def __init__(self) -> None: + self.data: list[str,int,float] = [] self.head = 0 self.tail = 0 def is_empty(self): return self.head == self.tail - def push(self, data): + def push(self, data: int) -> None: self.data.append(data) self.tail = self.tail + 1 @@ -31,18 +31,22 @@ def pop(self): def count(self): return self.tail - self.head - def print(self): + def print(self) -> None: print(self.data) print("**************") print(self.data[self.head : self.tail]) class my_node: - def __init__(self, data): - self.data = data - self.left = None - self.right = None - self.height = 1 + """ + This is the Class Node with a constructor that contains data variable to type data + height type in and left, right pointers. + """ + def __init__(self, data: int) -> None: + self.data: int = data + self.left: my_node = None + self.right: my_node = None + self.height: int = 1 def get_data(self): return self.data @@ -56,24 +60,24 @@ def get_right(self): def get_height(self): return self.height - def set_data(self, data): - self.data = data + def set_data(self, data: int) -> None: + self.data: int = data return - def set_left(self, node): - self.left = node + def set_left(self, node) -> None: + self.left: my_node = node return - def set_right(self, node): + def set_right(self, node) -> None: self.right = node return - def set_height(self, height): - self.height = height + def set_height(self, height: int) -> None: + self.height: int = height return -def get_height(node): +def get_height(node: my_node): if node is None: return 0 return node.get_height() @@ -85,7 +89,7 @@ def my_max(a, b): return b -def right_rotation(node): +def right_rotation(node: my_node): r""" A B / \ / \ @@ -107,7 +111,7 @@ def right_rotation(node): return ret -def left_rotation(node): +def left_rotation(node: my_node): """ a mirror symmetry rotation of the left_rotation """ @@ -122,7 +126,7 @@ def left_rotation(node): return ret -def lr_rotation(node): +def lr_rotation(node: my_node): r""" A A Br / \ / \ / \ @@ -137,12 +141,12 @@ def lr_rotation(node): return right_rotation(node) -def rl_rotation(node): +def rl_rotation(node: my_node): node.set_right(right_rotation(node.get_right())) return left_rotation(node) -def insert_node(node, data): +def insert_node(node: my_node, data: int): if node is None: return my_node(data) if data < node.get_data(): @@ -168,19 +172,19 @@ def insert_node(node, data): return node -def get_rightMost(root): +def get_rightMost(root: my_node): while root.get_right() is not None: root = root.get_right() return root.get_data() -def get_leftMost(root): +def get_leftMost(root: my_node): while root.get_left() is not None: root = root.get_left() return root.get_data() -def del_node(root, data): +def del_node(root: my_node, data: int): if root.get_data() == data: if root.get_left() is not None and root.get_right() is not None: temp_data = get_leftMost(root.get_right()) @@ -256,18 +260,18 @@ class AVLtree: ************************************* """ - def __init__(self): - self.root = None + def __init__(self) -> None: + self.root: my_node = None def get_height(self): # print("yyy") return get_height(self.root) - def insert(self, data): + def insert(self, data: int) -> None: print("insert:" + str(data)) self.root = insert_node(self.root, data) - def del_node(self, data): + def del_node(self, data: int) -> None: print("delete:" + str(data)) if self.root is None: print("Tree is empty!") From 86e2b125cdf62bae7887789a16e9b67e04d86bee Mon Sep 17 00:00:00 2001 From: A N U S H <54374648+anushkrishnav@users.noreply.github.com> Date: Mon, 10 Aug 2020 12:48:10 +0530 Subject: [PATCH 2/4] Fixed Linting issue --- data_structures/binary_tree/avl_tree.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data_structures/binary_tree/avl_tree.py b/data_structures/binary_tree/avl_tree.py index d7c9601a58dc..5c125563a18c 100644 --- a/data_structures/binary_tree/avl_tree.py +++ b/data_structures/binary_tree/avl_tree.py @@ -12,7 +12,7 @@ class my_queue: def __init__(self) -> None: - self.data: list[str,int,float] = [] + self.data: list[str, int, float] = [] self.head = 0 self.tail = 0 @@ -41,7 +41,7 @@ class my_node: """ This is the Class Node with a constructor that contains data variable to type data height type in and left, right pointers. - """ + """ def __init__(self, data: int) -> None: self.data: int = data self.left: my_node = None From fe3939579a93116a45a8d91f232506ad7a4cfe40 Mon Sep 17 00:00:00 2001 From: A N U S H <54374648+anushkrishnav@users.noreply.github.com> Date: Mon, 10 Aug 2020 17:12:19 +0530 Subject: [PATCH 3/4] Fixed class name and removed unwanted check --- data_structures/binary_tree/avl_tree.py | 43 ++++++++++++------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/data_structures/binary_tree/avl_tree.py b/data_structures/binary_tree/avl_tree.py index 5c125563a18c..902b7d961fde 100644 --- a/data_structures/binary_tree/avl_tree.py +++ b/data_structures/binary_tree/avl_tree.py @@ -10,7 +10,7 @@ import random -class my_queue: +class MyQueue: def __init__(self) -> None: self.data: list[str, int, float] = [] self.head = 0 @@ -31,21 +31,20 @@ def pop(self): def count(self): return self.tail - self.head - def print(self) -> None: - print(self.data) - print("**************") - print(self.data[self.head : self.tail]) + def __str__(self) : + return str(self.data) -class my_node: + +class Node: """ This is the Class Node with a constructor that contains data variable to type data height type in and left, right pointers. """ def __init__(self, data: int) -> None: self.data: int = data - self.left: my_node = None - self.right: my_node = None + self.left: Node = None + self.right: Node = None self.height: int = 1 def get_data(self): @@ -61,11 +60,11 @@ def get_height(self): return self.height def set_data(self, data: int) -> None: - self.data: int = data + self.data = data return def set_left(self, node) -> None: - self.left: my_node = node + self.left: Node = node return def set_right(self, node) -> None: @@ -77,7 +76,7 @@ def set_height(self, height: int) -> None: return -def get_height(node: my_node): +def get_height(node: Node): if node is None: return 0 return node.get_height() @@ -89,7 +88,7 @@ def my_max(a, b): return b -def right_rotation(node: my_node): +def right_rotation(node: Node): r""" A B / \ / \ @@ -111,7 +110,7 @@ def right_rotation(node: my_node): return ret -def left_rotation(node: my_node): +def left_rotation(node: Node): """ a mirror symmetry rotation of the left_rotation """ @@ -126,7 +125,7 @@ def left_rotation(node: my_node): return ret -def lr_rotation(node: my_node): +def lr_rotation(node: Node): r""" A A Br / \ / \ / \ @@ -141,14 +140,14 @@ def lr_rotation(node: my_node): return right_rotation(node) -def rl_rotation(node: my_node): +def rl_rotation(node: Node): node.set_right(right_rotation(node.get_right())) return left_rotation(node) -def insert_node(node: my_node, data: int): +def insert_node(node: Node, data: int): if node is None: - return my_node(data) + return Node(data) if data < node.get_data(): node.set_left(insert_node(node.get_left(), data)) if ( @@ -172,19 +171,19 @@ def insert_node(node: my_node, data: int): return node -def get_rightMost(root: my_node): +def get_rightMost(root: Node): while root.get_right() is not None: root = root.get_right() return root.get_data() -def get_leftMost(root: my_node): +def get_leftMost(root: Node): while root.get_left() is not None: root = root.get_left() return root.get_data() -def del_node(root: my_node, data: int): +def del_node(root: Node, data: int): if root.get_data() == data: if root.get_left() is not None and root.get_right() is not None: temp_data = get_leftMost(root.get_right()) @@ -261,7 +260,7 @@ class AVLtree: """ def __init__(self) -> None: - self.root: my_node = None + self.root: Node = None def get_height(self): # print("yyy") @@ -280,7 +279,7 @@ def del_node(self, data: int) -> None: def __str__(self): # a level traversale, gives a more intuitive look on the tree output = "" - q = my_queue() + q = MyQueue() q.push(self.root) layer = self.get_height() if layer == 0: From 78814025a2c49337d7192721ffdd1378f9225220 Mon Sep 17 00:00:00 2001 From: A N U S H <54374648+anushkrishnav@users.noreply.github.com> Date: Mon, 10 Aug 2020 17:20:40 +0530 Subject: [PATCH 4/4] Remove an extra blank line --- data_structures/binary_tree/avl_tree.py | 1 - 1 file changed, 1 deletion(-) diff --git a/data_structures/binary_tree/avl_tree.py b/data_structures/binary_tree/avl_tree.py index 902b7d961fde..5c8c0756e237 100644 --- a/data_structures/binary_tree/avl_tree.py +++ b/data_structures/binary_tree/avl_tree.py @@ -35,7 +35,6 @@ def __str__(self) : return str(self.data) - class Node: """ This is the Class Node with a constructor that contains data variable to type data