Skip to content

Commit e7fff1f

Browse files
committed
Adding Simple Solution for Problem - 105 - Construct BT Preorder Inorder Traversal
1 parent 3c6d744 commit e7fff1f

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
##==================================
2+
## Leetcode
3+
## Student: Vandit Jyotindra Gajjar
4+
## Year: 2020
5+
## Problem: 105
6+
## Problem Name: Construct Binary Tree from Preorder and Inorder Traversal
7+
##===================================
8+
#
9+
#Given preorder and inorder traversal of a tree, construct the binary tree.
10+
#
11+
#Note:
12+
#You may assume that duplicates do not exist in the tree.
13+
#
14+
#For example, given
15+
#
16+
#preorder = [3,9,20,15,7]
17+
#inorder = [9,3,15,20,7]
18+
#Return the following binary tree:
19+
#
20+
# 3
21+
# / \
22+
# 9 20
23+
# / \
24+
# 15 7
25+
class Solution:
26+
def buildTree(self, preorder, inorder):
27+
l_preorder = len(preorder) #Initialize l_preorder by finding length of preorder
28+
l_inorder = len(inorder) #Initialize l_inorder by finding length of inorder
29+
if l_preorder != l_inorder: #Condition-check: If l_preorder and l_inorder are not the same
30+
return None #We return none as the tree is different
31+
if preorder is None: #Condition-check: If preorder is empty
32+
return None #We return none as preorder is different
33+
if inorder is None: #Condition-check: If inorder is empty
34+
return None #We return none as inorder is different
35+
if l_preorder == 0: #If length of preorder is zero
36+
return None #We return none as preorder is different
37+
root = TreeNode(preorder[0]) #Initialize root by taking first value from preorder
38+
root_index = inorder.index(root.val) #Initialize root_index by taking index from inorder's root
39+
root.left = self.buildTree(preorder[1:root_index + 1], inorder[:root_index]) #Initialize root.left by using recursion
40+
root.right = self.buildTree(preorder[root_index + 1:], inorder[root_index + 1:]) #Initialize root.right by using recursion
41+
return root #We return root after no value is present in preorder or inorder
42+

0 commit comments

Comments
 (0)