From c0523db9c2ffeedb665c76b17d21ca84bcca6d4e Mon Sep 17 00:00:00 2001 From: avigod <31662669+avigod@users.noreply.github.com> Date: Sun, 30 Jun 2024 10:17:17 -0700 Subject: [PATCH] Update binary_tree_part_2.py Adding comments to the delete method, as it took me longer than expected to understand the code. Even after I went through the video. --- .../9_Binary_Tree_2/binary_tree_part_2.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/data_structures/9_Binary_Tree_2/binary_tree_part_2.py b/data_structures/9_Binary_Tree_2/binary_tree_part_2.py index 8a4a4a5..17a8ff3 100644 --- a/data_structures/9_Binary_Tree_2/binary_tree_part_2.py +++ b/data_structures/9_Binary_Tree_2/binary_tree_part_2.py @@ -49,24 +49,27 @@ def in_order_traversal(self): return elements def delete(self, val): - if val < self.data: + #traverse till you find the node to delete + if val < self.data: #then go left if self.left: self.left = self.left.delete(val) - elif val > self.data: + elif val > self.data: #then go right if self.right: self.right = self.right.delete(val) - else: - if self.left is None and self.right is None: + else:#found node to delete i.e. val = self.data + if self.left is None and self.right is None: #case of deleting leaf node return None - elif self.left is None: + elif self.left is None: #case of deleting node with one child return self.right - elif self.right is None: + elif self.right is None: #case of deleting node with one child return self.left + #case of deleting node with two children min_val = self.right.find_min() self.data = min_val self.right = self.right.delete(min_val) - + + #if not leaf, then you have to return self return self def find_max(self):