[Leet Code] All Elements in Two Binary Search Trees

Matthew Boyd
2 min readFeb 8, 2021

Leetcode: https://leetcode.com/problems/all-elements-in-two-binary-search-trees/

Problem:

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 = [0,-10,10], root2 = [5,1,7,0,2]
Output: [-10,0,0,1,2,5,7,10]

Example 3:

Input: root1 = [], root2 = [5,1,7,0,2]
Output: [0,1,2,5,7]

Example 4:

Input: root1 = [0,-10,10], root2 = []
Output: [-10,0,10]

Example 5:

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

Constraints:

  • Each tree has at most 5000 nodes.
  • Each node’s value is between [-10^5, 10^5].

Solution:

# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
def getAllElements(self, root1, root2):
"""
:type root1: TreeNode
:type root2: TreeNode
:rtype: List[int]
"""
elements = []
self.traverse(root1, elements)
self.traverse(root2, elements)
return sorted(elements)

def traverse(self, root, elements):
if root:
self.traverse(root.left, elements)
elements.append(root.val)
self.traverse(root.right, elements)

Explanation:

This is quite a simple one actually, even though it’s labelled as a medium. All we have to do is create a helper method to traverse the tree in-order, then we call that twice with the elements array that we define in order to put our values that are found in the tree in there. Then lastly, we call the native sorted method on the list of elements, and this will provide us with the answer.

--

--