Skip to main content

All Nodes in Two Binary Search Trees to be Printed

Problem Statement​

Print All Nodes 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. LeetCode link

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].

Code​

Python Code
class newNode:
def __init__(self, val):
self.val = val
self.left = self.right = None


def insert(node, key):

# If the tree is empty, return a new Node
if node == None:
return newNode(key)

# Otherwise, recur down the tree
if key < node.val:
node.left = insert(node.left, key)
elif key > node.val:
node.right = insert(node.right, key)

# return the (unchanged) Node pointer
return node


def getInorder(node):
if node is None:
return []
return getInorder(node.left) + [node.val] + getInorder(node.right)


def sortArray(arr1, arr2):

i = j = 0
arr = []

while True:
if i == len(arr1):
break
if j == len(arr2):
break

if arr1[i] > arr2[j]:
arr.append(arr2[j])
j += 1
else:
arr.append(arr1[i])
i += 1

while j != len(arr2):
arr.append(arr2[j])
j += 1

while i != len(arr1):
arr.append(arr1[i])
i += 1

return arr


def getAllElements(root1, root2):

if root1 is not None:
firstInorder = getInorder(root1)
if root1 is not None:
secondInorder = getInorder(root2)

return sortArray(firstInorder, secondInorder)


if __name__ == '__main__':

# Create first tree as shown in example
root1 = None
root1 = insert(root1, 5)
val1 = insert(root1, 1)
val1 = insert(root1, 10)
val1 = insert(root1, 0)
val1 = insert(root1, 4)
val1 = insert(root1, 7)
val1 = insert(root1, 9)

# Create second tree as shown in example
root2 = None
root2 = insert(root2, 10)
val1 = insert(root2, 7)
val1 = insert(root2, 20)
val1 = insert(root2, 4)
val1 = insert(root2, 9)

print('All Nodes: ', getAllElements(root1, root2))