
Problem
Solution
Submissions
Binary Search Tree Operations
Certification: Advanced Level
Accuracy: 0%
Submissions: 0
Points: 15
Write a C++ program to implement a binary search tree (BST) and perform basic operations such as insertion, deletion, searching, and traversals (in-order, pre-order, and post-order).
Example 1
- Input:
- Operations:
- 1. Insert: 50, 30, 70, 20, 40, 60, 80
- 2. In-order traversal
- 3. Pre-order traversal
- 4. Post-order traversal
- 5. Search for 40
- 6. Delete 30
- 7. In-order traversal
- Operations:
- Output:
- In-order traversal: 20 30 40 50 60 70 80
- Pre-order traversal: 50 30 20 40 70 60 80
- Post-order traversal: 20 40 30 60 80 70 50
- Element 40 found in the BST
- In-order traversal after deletion: 20 40 50 60 70 80
- Explanation:
- Step 1: Create BST by inserting values
- Step 2: In-order traversal visits nodes in ascending order
- Step 3: Pre-order traversal visits root first, then left & right subtrees
- Step 4: Post-order traversal visits left & right subtrees, then root
- Step 5: Search finds element 40
- Step 6: Delete node 30 (has two children)
Example 2
- Input:
- Operations:
- 1. Insert: 45, 25, 75, 15, 35, 65, 85
- 2. In-order traversal
- 3. Search for 100
- 4. Delete 75
- 5. In-order traversal
- Operations:
- Output:
- In-order traversal: 15 25 35 45 65 75 85
- Element 100 not found in the BST
- In-order traversal after deletion: 15 25 35 45 65 85
- Explanation:
- Step 1: Create BST by inserting values
- Step 2: In-order traversal visits nodes in ascending order
- Step 3: Search fails to find element 100
- Step 4: Delete node 75 (has one child)
- Step 5: Updated in-order traversal shows 75 is removed
Constraints
- 1 ≤ Number of operations ≤ 10^4
- -10^9 ≤ Element values ≤ 10^9
- Time Complexity: O(h) for insertion, deletion, and search operations, where h is the height of the tree
- Space Complexity: O(n) where n is the number of elements in the tree
Editorial
My Submissions
All Solutions
Lang | Status | Date | Code |
---|---|---|---|
You do not have any submissions for this problem. |
User | Lang | Status | Date | Code |
---|---|---|---|---|
No submissions found. |
Solution Hints
- Define a Node structure with 'data', 'left' child pointer, and 'right' child pointer.
- For insertion, compare the value with the current node and move to the left or right subtree accordingly.
- For deletion, handle three cases: node with no children, node with one child, and node with two children.
- For in-order traversal, recursively visit left subtree, then the node, then right subtree.
- For pre-order traversal, recursively visit the node, then left subtree, then right subtree.
- For post-order traversal, recursively visit left subtree, then right subtree, then the node.
- For searching, compare the value with the current node and move to the left or right subtree accordingly.