diff --git a/Sorting Algorithms/.idea/.gitignore b/BST/.idea/.gitignore
similarity index 100%
rename from Sorting Algorithms/.idea/.gitignore
rename to BST/.idea/.gitignore
diff --git a/Sorting Algorithms/.idea/Sorting Algorithms.iml b/BST/.idea/BST.iml
similarity index 100%
rename from Sorting Algorithms/.idea/Sorting Algorithms.iml
rename to BST/.idea/BST.iml
diff --git a/Sorting Algorithms/.idea/inspectionProfiles/profiles_settings.xml b/BST/.idea/inspectionProfiles/profiles_settings.xml
similarity index 100%
rename from Sorting Algorithms/.idea/inspectionProfiles/profiles_settings.xml
rename to BST/.idea/inspectionProfiles/profiles_settings.xml
diff --git a/Sorting Algorithms/.idea/misc.xml b/BST/.idea/misc.xml
similarity index 100%
rename from Sorting Algorithms/.idea/misc.xml
rename to BST/.idea/misc.xml
diff --git a/BST/.idea/modules.xml b/BST/.idea/modules.xml
new file mode 100644
index 00000000..014ee520
--- /dev/null
+++ b/BST/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Sorting Algorithms/.idea/vcs.xml b/BST/.idea/vcs.xml
similarity index 100%
rename from Sorting Algorithms/.idea/vcs.xml
rename to BST/.idea/vcs.xml
diff --git a/BST/Easy/01_Ceil_in_BST.py b/BST/Easy/01_Ceil_in_BST.py
index 559ee759..3b6a61b2 100644
--- a/BST/Easy/01_Ceil_in_BST.py
+++ b/BST/Easy/01_Ceil_in_BST.py
@@ -1,4 +1,4 @@
-# Problem URL: https://leetcode.com/problems/ceil-in-a-binary-search-tree
+# Problem URL: https://www.geeksforgeeks.org/problems/implementing-ceil-in-bst/1
# TODO: Implement the solution
def solution():
diff --git a/BST/Medium/236. Lowest Common Ancestor of a Binary Tree.py b/BST/Medium/236. Lowest Common Ancestor of a Binary Tree.py
new file mode 100644
index 00000000..1c5416f7
--- /dev/null
+++ b/BST/Medium/236. Lowest Common Ancestor of a Binary Tree.py
@@ -0,0 +1,12 @@
+#https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/description/
+
+# Definition for a binary tree node.
+# class TreeNode:
+# def __init__(self, x):
+# self.val = x
+# self.left = None
+# self.right = None
+
+class Solution:
+ def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':
+
\ No newline at end of file
diff --git a/BST/Medium/43_Delete_Node_In_A_BST.py b/BST/Medium/43_Delete_Node_In_A_BST.py
index d6943680..e8a59490 100644
--- a/BST/Medium/43_Delete_Node_In_A_BST.py
+++ b/BST/Medium/43_Delete_Node_In_A_BST.py
@@ -1,6 +1,77 @@
# Problem: Delete_Node_In_A_BST
# URL: https://leetcode.com/problems/delete-node-in-a-bst/
-def solution():
- # TODO: Implement the solution for Delete_Node_In_A_BST
- pass
+class Node:
+ def __init__(self,data) -> None:
+ self.val=data
+ self.left=None
+ self.right=None
+
+
+class BST:
+ def insert(self,root,key):
+ if not root:
+ return Node(key)
+ if root.val>key:
+ root.left=self.insert(root.left,key)
+ elif root.valkey:
+ root.left=self.deleteNode(root.left,key)
+ elif root.val None:
+ """
+ Do not return anything, modify root in-place instead.
+ """
+
\ No newline at end of file
diff --git a/BST/Traversal.py b/BST/Traversal.py
index e69de29b..93040a84 100644
--- a/BST/Traversal.py
+++ b/BST/Traversal.py
@@ -0,0 +1,45 @@
+class Node:
+ def __init__(self,data):
+ self.left=None
+ self.right=None
+ self.data=data
+
+def insert(root,data):
+ if root is None:
+ return Node(data)
+ if root.data==data:
+ return root
+ if root.datadata:
+ root.left=insert(root.left,data)
+ return root
+
+def InOrder(root):
+ if root:
+ InOrder(root.left)
+ print(root.data, end=' ')
+ InOrder(root.right)
+def preOrder(root):
+ if root:
+ print(root.data, end=' ')
+ preOrder(root.left)
+ preOrder(root.right)
+def postOrder(root):
+ if root:
+ postOrder(root.left)
+ postOrder(root.right)
+ print(root.data, end=' ')
+
+if __name__ == '__main__':
+ root=Node(100)
+ insert(root,34)
+ insert(root,54)
+ insert(root,74)
+ insert(root,38)
+ insert(root,30)
+ InOrder(root)
+ print()
+ preOrder(root)
+ print()
+ postOrder(root)
diff --git a/BST/Tree ds.ipynb b/BST/Tree ds.ipynb
index efb5bd40..809694d8 100644
--- a/BST/Tree ds.ipynb
+++ b/BST/Tree ds.ipynb
@@ -4,13 +4,13 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "**Tree Data Structrue** \n",
- "A tree is a non-linear abstract data type with a hierarchy-based structure. It consists of nodes (where the data is stored) that are connected via links. The tree data structure stems from a single node called a root node and has subtrees connected to the root."
+ "**Tree val Structrue** \n",
+ "A tree is a non-linear abstract val type with a hierarchy-based structure. It consists of nodes (where the val is stored) that are connected via links. The tree val structure stems from a single node called a root node and has subtrees connected to the root."
]
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
@@ -27,7 +27,7 @@
},
{
"cell_type": "code",
- "execution_count": 14,
+ "execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
@@ -37,7 +37,7 @@
},
{
"cell_type": "code",
- "execution_count": 15,
+ "execution_count": 40,
"metadata": {},
"outputs": [],
"source": [
@@ -48,7 +48,7 @@
},
{
"cell_type": "code",
- "execution_count": 29,
+ "execution_count": 41,
"metadata": {},
"outputs": [
{
@@ -57,7 +57,7 @@
"{2: 2, 3: 2, 4: 5, 5: 1}"
]
},
- "execution_count": 29,
+ "execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
@@ -68,7 +68,7 @@
},
{
"cell_type": "code",
- "execution_count": 24,
+ "execution_count": 42,
"metadata": {},
"outputs": [],
"source": [
@@ -77,7 +77,7 @@
},
{
"cell_type": "code",
- "execution_count": 27,
+ "execution_count": 43,
"metadata": {},
"outputs": [
{
@@ -98,7 +98,7 @@
},
{
"cell_type": "code",
- "execution_count": 33,
+ "execution_count": 44,
"metadata": {},
"outputs": [],
"source": [
@@ -107,7 +107,7 @@
},
{
"cell_type": "code",
- "execution_count": 56,
+ "execution_count": 45,
"metadata": {},
"outputs": [],
"source": [
@@ -121,7 +121,7 @@
},
{
"cell_type": "code",
- "execution_count": 57,
+ "execution_count": 46,
"metadata": {},
"outputs": [
{
@@ -130,7 +130,7 @@
"(4, 5)"
]
},
- "execution_count": 57,
+ "execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
@@ -141,7 +141,7 @@
},
{
"cell_type": "code",
- "execution_count": 70,
+ "execution_count": 47,
"metadata": {},
"outputs": [],
"source": [
@@ -165,7 +165,7 @@
},
{
"cell_type": "code",
- "execution_count": 71,
+ "execution_count": 48,
"metadata": {},
"outputs": [
{
@@ -174,7 +174,7 @@
"(1, 1)"
]
},
- "execution_count": 71,
+ "execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
@@ -186,7 +186,7 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 49,
"metadata": {},
"outputs": [],
"source": [
@@ -202,7 +202,7 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": 50,
"metadata": {},
"outputs": [
{
@@ -220,13 +220,13 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": 51,
"metadata": {},
"outputs": [],
"source": [
"class TreeNode:\n",
- " def __init__(self, data):\n",
- " self.data = data\n",
+ " def __init__(self, val):\n",
+ " self.val = val\n",
" self.left = None\n",
" self.right = None\n",
"\n",
@@ -234,23 +234,23 @@
" def __init__(self):\n",
" self.root = None\n",
"\n",
- " def insert(self, data):\n",
+ " def insert(self, val):\n",
" if self.root is None:\n",
- " self.root = TreeNode(data)\n",
+ " self.root = TreeNode(val)\n",
" else:\n",
- " self._insert(self.root, data)\n",
+ " self._insert(self.root, val)\n",
"\n",
- " def _insert(self, node, data):\n",
- " if data < node.data:\n",
+ " def _insert(self, node, val):\n",
+ " if val < node.val:\n",
" if node.left is None:\n",
- " node.left = TreeNode(data)\n",
+ " node.left = TreeNode(val)\n",
" else:\n",
- " self._insert(node.left, data)\n",
+ " self._insert(node.left, val)\n",
" else:\n",
" if node.right is None:\n",
- " node.right = TreeNode(data)\n",
+ " node.right = TreeNode(val)\n",
" else:\n",
- " self._insert(node.right, data)\n",
+ " self._insert(node.right, val)\n",
"\n",
" def inorder_traversal(self):\n",
" return self._inorder_traversal(self.root, [])\n",
@@ -258,7 +258,7 @@
" def _inorder_traversal(self, node, result):\n",
" if node:\n",
" self._inorder_traversal(node.left, result)\n",
- " result.append(node.data)\n",
+ " result.append(node.val)\n",
" self._inorder_traversal(node.right, result)\n",
" return result\n",
"\n",
@@ -267,7 +267,7 @@
"\n",
" def _preorder_traversal(self, node, result):\n",
" if node:\n",
- " result.append(node.data)\n",
+ " result.append(node.val)\n",
" self._preorder_traversal(node.left, result)\n",
" self._preorder_traversal(node.right, result)\n",
" return result\n",
@@ -279,13 +279,13 @@
" if node:\n",
" self._postorder_traversal(node.left, result)\n",
" self._postorder_traversal(node.right, result)\n",
- " result.append(node.data)\n",
+ " result.append(node.val)\n",
" return result\n"
]
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": 52,
"metadata": {},
"outputs": [
{
@@ -319,7 +319,7 @@
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": 53,
"metadata": {},
"outputs": [],
"source": [
@@ -330,23 +330,23 @@
" def __init__(self):\n",
" self.root = None\n",
"\n",
- " def insert(self, data):\n",
+ " def insert(self, val):\n",
" if self.root is None:\n",
- " self.root = TreeNode(data)\n",
+ " self.root = TreeNode(val)\n",
" else:\n",
- " self._insert(self.root, data)\n",
+ " self._insert(self.root, val)\n",
"\n",
- " def _insert(self, node, data):\n",
- " if data < node.data:\n",
+ " def _insert(self, node, val):\n",
+ " if val < node.val:\n",
" if node.left is None:\n",
- " node.left = TreeNode(data)\n",
+ " node.left = TreeNode(val)\n",
" else:\n",
- " self._insert(node.left, data)\n",
+ " self._insert(node.left, val)\n",
" else:\n",
" if node.right is None:\n",
- " node.right = TreeNode(data)\n",
+ " node.right = TreeNode(val)\n",
" else:\n",
- " self._insert(node.right, data)\n",
+ " self._insert(node.right, val)\n",
"\n",
" def plot_tree(self):\n",
" G = nx.DiGraph()\n",
@@ -358,14 +358,14 @@
" def _add_edges(self, node, graph, parent=None):\n",
" if node is not None:\n",
" if parent:\n",
- " graph.add_edge(parent.data, node.data)\n",
+ " graph.add_edge(parent.val, node.val)\n",
" self._add_edges(node.left, graph, node)\n",
" self._add_edges(node.right, graph, node)\n",
"\n",
" def _get_positions(self, node, x, y, dx):\n",
" pos = {}\n",
" if node:\n",
- " pos[node.data] = (x, y)\n",
+ " pos[node.val] = (x, y)\n",
" if node.left:\n",
" pos.update(self._get_positions(node.left, x - dx, y - 1, dx / 2))\n",
" if node.right:\n",
@@ -383,18 +383,23 @@
},
{
"cell_type": "code",
- "execution_count": 16,
+ "execution_count": 54,
"metadata": {},
"outputs": [
{
- "data": {
- "image/png": "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",
- "text/plain": [
- "