21. Serialize and Deserialize a Binary Search Tree
Required Input:
root = [5, 3, 7, 2, 4, 6, 8]Expected Output:
Serialized: 5,3,2,#,#,4,#,#,7,6,#,#,8,#,#
Deserialized: TreeNode(5, left=TreeNode(3, left=TreeNode(2, left=None, right=None), right=TreeNode(4, left=None, right=None)), right=TreeNode(7, left=TreeNode(6, left=None, right=None), right=TreeNode(8, left=None, right=None)))
Code In Python
class Codec:
def serialize(self, root):
# Write your logic here
pass
def deserialize(self, data):
pass
# Prefilled input
root = TreeNode(5, TreeNode(3, TreeNode(2), TreeNode(4)), TreeNode(7, TreeNode(6), TreeNode(8)))
codec = Codec()
serialized_data = codec.serialize(root)
print('Serialized:', serialized_data)
deserialized_tree = codec.deserialize(serialized_data)
print('Deserialized:', deserialized_tree)
Run Code?
Click Run Button to view compiled output
22. Find the Median of a Stream Using Two Heaps
Required Input:
operations = ['add_num 1', 'add_num 2', 'find_median', 'add_num 3', 'find_median']Expected Output:
1.5
2
Code In Python
import heapq
class MedianFinder:
def __init__(self):
# Write your logic here
pass
def add_num(self, num):
pass
def find_median(self):
pass
# Prefilled input
obj = MedianFinder()
operations = ['add_num 1', 'add_num 2', 'find_median', 'add_num 3', 'find_median']
for op in operations:
if 'add_num' in op:
obj.add_num(int(op.split()[1]))
elif op == 'find_median':
print(obj.find_median())
Run Code?
Click Run Button to view compiled output
23. Validate BST
Required Input:
root = [2, 1, 3]Expected Output:
True
Code In Python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def is_valid_bst(root):
# Write your logic here
pass
# Prefilled input
root = TreeNode(2, TreeNode(1), TreeNode(3))
print(is_valid_bst(root))
Run Code?
Click Run Button to view compiled output
24. Delete Node in BST
Required Input:
root = [5, 3, 6, 2, 4, None, 7], key = 3Expected Output:
[5, 4, 6, 2, None, None, 7]
Code In Python
def delete_node(root, key):
# Write your logic here
pass
# Prefilled input as TreeNode structure
Run Code?
Click Run Button to view compiled output
25. BST to Greater Tree
Required Input:
root = [5, 2, 13]Expected Output:
[18, 20, 13]
Code In Python
def convert_bst(root):
# Write your logic here
pass
Run Code?
Click Run Button to view compiled output
26. LCA in Binary Tree
Required Input:
root = [3,5,1,6,2,0,8,None,None,7,4], p = 5, q = 1Expected Output:
3
Code In Python
def lowest_common_ancestor(root, p, q):
# Write your logic here
pass
# Prefilled input
root = TreeNode(6, TreeNode(2, TreeNode(0), TreeNode(4, TreeNode(3), TreeNode(5))), TreeNode(8, TreeNode(7), TreeNode(9)))
p = 2
q = 8
print(lowest_common_ancestor(root, p, q))
Run Code?
Click Run Button to view compiled output
27. Find Mode in BST
Required Input:
root = [1, None, 2, 2]Expected Output:
[2]
Code In Python
def find_mode(root):
# Write your logic here
pass
Run Code?
Click Run Button to view compiled output
28. BST to DLL
Required Input:
root = [4, 2, 5, 1, 3]Expected Output:
1 <-> 2 <-> 3 <-> 4 <-> 5 (circular)
Code In Python
def tree_to_doubly_list(root):
# Write your logic here
pass
Run Code?
Click Run Button to view compiled output
29. Binary Tree to BST
Required Input:
root = [10, 30, 15, 20, None, None, 5]Expected Output:
[15, 10, 20, 5, None, None, 30]
Code In Python
def binary_tree_to_bst(root):
# Write your logic here
pass
Run Code?
Click Run Button to view compiled output
30. Trim BST
Required Input:
root = [1, 0, 2], low = 1, high = 2Expected Output:
[3, 2, None, 1]
Code In Python
def trim_bst(root, low, high):
# Write your logic here
pass
Run Code?
Click Run Button to view compiled output


