Build Binary Tree from Preorder and Inorder Traversal
Explore how to construct a binary tree from given preorder and inorder traversal arrays. Understand the relationship between these traversals and implement the solution to reconstruct the tree accurately.
We'll cover the following...
Statement
Create a binary tree from two integer arrays, p_order and i_order, where p_order represents a preorder traversal of a binary tree, and i_order represents an inorder traversal of the same tree.
Constraints:
-
p_order.length,i_order.length i_order.lengthp_order.length-
p_order[i],i_order[i] p_orderandi_orderconsist of unique values.- Each value of
i_orderalso appears inp_orderand vice versa.
Examples
Understand the problem
Let’s take a moment to make sure you’ve correctly understood the problem. The quiz below helps us to check if you’re solving the correct problem:
Build Binary Tree from Preorder and Inorder Traversal
Select the correct binary tree constructed from preorder and inorder traversal:
preorder = [1, 12, 15, 6, 9, 5, 2]
inorder = [15, 12, 6, 1, 5, 9, 2]
1
/ \
12 9
/ \ / \
15 6 5 2
12
/ \
1 9
/ \ / \
15 6 5 2
15
/ \
12 9
/ \ / \
1 6 5 2
9
/ \
1 12
/ \ / \
15 6 5 2
Figure it out!
We have a game for you to play. Rearrange the logical building blocks to develop a clearer understanding of how to solve this problem.
Try it yourself
Implement your solution in the following coding playground.
# Definition of a binary tree node## class TreeNode:# def __init__(self, data):# self.data = data# self.left = None# self.right = Nonefrom ds_v1.BinaryTree.BinaryTree import TreeNodedef build_tree(p_order, i_order):# Replace this placeholder return statement with your codereturn TreeNode(-1)