DSA — Binary Search Trees
What is a BST?
A binary tree where left child < parent < right child.
class TreeNode:
def __init__(self, data):
self.data = data
self.left = None
self.right = None
class BST:
def __init__(self):
self.root = None
Insert Operation
def insert(self, data):
if not self.root:
self.root = TreeNode(data)
else:
self._insert_recursive(self.root, data)
def _insert_recursive(self, node, data):
if data < node.data:
if node.left is None:
node.left = TreeNode(data)
else:
self._insert_recursive(node.left, data)
else:
if node.right is None:
node.right = TreeNode(data)
else:
self._insert_recursive(node.right, data)
Search Operation
def search(self, data):
return self._search_recursive(self.root, data)
def _search_recursive(self, node, data):
if node is None or node.data == data:
return node
if data < node.data:
return self._search_recursive(node.left, data)
return self._search_recursive(node.right, data)
Delete Operation
def delete(self, data):
self.root = self._delete_recursive(self.root, data)
def _delete_recursive(self, node, data):
if node is None:
return node
if data < node.data:
node.left = self._delete_recursive(node.left, data)
elif data > node.data:
node.right = self._delete_recursive(node.right, data)
else:
if node.left is None:
return node.right
elif node.right is None:
return node.left
min_node = self._find_min(node.right)
node.data = min_node.data
node.right = self._delete_recursive(node.right, min_node.data)
return node
Mini Practice
- Implement a BST
- Insert and search
- Delete a node
- Find min and max
Up Next
Continue with AVL Trees — self-balancing BST.
Related Topics
Frequently Asked Questions about Binary Search Trees
What is Binary Search Trees in DSA?
Binary Search Trees is a fundamental concept in DSA. This lesson explains it step by step with clear examples, making it easy for beginners to understand.
How do I learn Binary Search Trees?
Start by reading the explanation above, then try the code examples. Practice by modifying the examples and experimenting with different values. Hands-on practice is the best way to learn Binary Search Trees.
Why is Binary Search Trees important in DSA?
Binary Search Trees is essential for DSA development. Understanding this concept will help you write better code and solve real-world problems more effectively.