## DEV Community

Abhishek Chaudhary

Posted on

# All Elements in Two Binary Search Trees

Given two binary search trees `root1` and `root2`, return a list containing all the integers from both trees sorted in ascending order.

Example 1:

Input: root1 = [2,1,4], root2 = [1,0,3]
Output: [0,1,1,2,3,4]

Example 2:

Input: root1 = [1,null,8], root2 = [8,1]
Output: [1,1,8,8]

Constraints:

• The number of nodes in each tree is in the range `[0, 5000]`.
• `-105 <= Node.val <= 105`

SOLUTION:

``````import heapq

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
def getAllElements(self, root1: TreeNode, root2: TreeNode) -> List[int]:
heap = []
paths = [root1, root2]
i = 0
while i < len(paths):
curr = paths[i]
if curr:
heapq.heappush(heap, curr.val)
if curr.left:
paths.append(curr.left)
if curr.right:
paths.append(curr.right)
i += 1
return heapq.nsmallest(len(heap), heap)
``````