[Leet Code] All Elements in Two Binary Search Trees
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.