Skip to content

Commit 504fd82

Browse files
committed
added constructing binary tree from inorder and preorder traversal data
1 parent c26ed9b commit 504fd82

File tree

3 files changed

+28
-2
lines changed

3 files changed

+28
-2
lines changed

EPI_prep/src/binary_trees/12_reconstruct_binary_tree_from_preorder_inorder_traversal/reconstruct_bt.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ def __init__(self, val=None, left=None, right=None):
1313

1414
def reconstruct(preorder, inorder):
1515
node_to_inorder_idx = {data: i for i, data in enumerate(inorder)}
16-
1716
# Builds the subtree with preorder[preorder_start:preorder_end] and
1817
# inorder[inorder_start:inorder_end].
1918
def binary_tree_from_preorder_inorder_helper(preorder_start, preorder_end,

leetcode/src/binary_trees/lc_102_binary_tree_level_order_traversal/binary_tree_level_order_traversal.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
def level_order_traversal(root):
44
if not root:
5-
return []
5+
return []
66

77
result = []
88
queue = deque([root])
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
class TreeNode:
2+
def __init__(self, val=0, left=None, right=None):
3+
self.val = val
4+
self.left = left
5+
6+
7+
def buildTree(preorder, inorder):
8+
inorder_values_to_index = {data: i for i, data in enumerate(inorder)}
9+
def buildTreeHelper(preorder_start, preorder_end, inorder_start, inorder_end):
10+
if preorder_start >= preorder_end or inorder_start >= inorder_end:
11+
return
12+
13+
node_val = preorder[preorder_start]
14+
root_index = inorder_values_to_index[node_val]
15+
left_subtree_size = root_index - inorder_start
16+
17+
preorder_start += 1
18+
left_preorder_end = preorder_start + left_subtree_size
19+
left = buildTreeHelper(preorder_start, left_preorder_end, inorder_start, root_index)
20+
right = buildTreeHelper(left_preorder_end, preorder_end, root_index + 1, inorder_end)
21+
22+
return TreeNode(node_val, left, right)
23+
24+
return buildTreeHelper(0, len(preorder), 0, len(inorder))
25+
26+
27+
buildTree([3,9,20,15,7], [9,3,15,20,7])

0 commit comments

Comments
 (0)