an HCL GUVI product

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 = 3

Expected 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 = 1

Expected 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 = 2

Expected 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

3 of 3