Skip to content

Commit a7bb97c

Browse files
[pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
1 parent 1ec0ff0 commit a7bb97c

File tree

1 file changed

+54
-16
lines changed

1 file changed

+54
-16
lines changed

data_structures/binary_tree/build_tree_from_traversal.py

Lines changed: 54 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@ def inorder(root, out):
1717

1818

1919
# === Build tree using PREORDER + INORDER ===
20-
def build_tree_from_pre(preorder, pre_start, pre_end,
21-
inorder_seq, in_start, in_end, in_map):
20+
def build_tree_from_pre(
21+
preorder, pre_start, pre_end, inorder_seq, in_start, in_end, in_map
22+
):
2223
"""Recursive helper to build tree from preorder and inorder traversal."""
2324
if pre_start > pre_end or in_start > in_end:
2425
return None
@@ -33,12 +34,24 @@ def build_tree_from_pre(preorder, pre_start, pre_end,
3334

3435
# Recursively build left and right subtrees
3536
root.left = build_tree_from_pre(
36-
preorder, pre_start + 1, pre_start + nums_left,
37-
inorder_seq, in_start, in_root_index - 1, in_map)
37+
preorder,
38+
pre_start + 1,
39+
pre_start + nums_left,
40+
inorder_seq,
41+
in_start,
42+
in_root_index - 1,
43+
in_map,
44+
)
3845

3946
root.right = build_tree_from_pre(
40-
preorder, pre_start + nums_left + 1, pre_end,
41-
inorder_seq, in_root_index + 1, in_end, in_map)
47+
preorder,
48+
pre_start + nums_left + 1,
49+
pre_end,
50+
inorder_seq,
51+
in_root_index + 1,
52+
in_end,
53+
in_map,
54+
)
4255

4356
return root
4457

@@ -47,13 +60,20 @@ def build_tree_pre(inorder_seq, preorder_seq):
4760
"""Wrapper function for building tree from preorder + inorder."""
4861
in_map = {val: i for i, val in enumerate(inorder_seq)}
4962
return build_tree_from_pre(
50-
preorder_seq, 0, len(preorder_seq) - 1,
51-
inorder_seq, 0, len(inorder_seq) - 1, in_map)
63+
preorder_seq,
64+
0,
65+
len(preorder_seq) - 1,
66+
inorder_seq,
67+
0,
68+
len(inorder_seq) - 1,
69+
in_map,
70+
)
5271

5372

5473
# === Build tree using POSTORDER + INORDER ===
55-
def build_tree_from_post(postorder, post_start, post_end,
56-
inorder_seq, in_start, in_end, in_map):
74+
def build_tree_from_post(
75+
postorder, post_start, post_end, inorder_seq, in_start, in_end, in_map
76+
):
5777
"""Recursive helper to build tree from postorder and inorder traversal."""
5878
if post_start > post_end or in_start > in_end:
5979
return None
@@ -68,12 +88,24 @@ def build_tree_from_post(postorder, post_start, post_end,
6888

6989
# Recursively build left and right subtrees
7090
root.left = build_tree_from_post(
71-
postorder, post_start, post_start + nums_left - 1,
72-
inorder_seq, in_start, in_root_index - 1, in_map)
91+
postorder,
92+
post_start,
93+
post_start + nums_left - 1,
94+
inorder_seq,
95+
in_start,
96+
in_root_index - 1,
97+
in_map,
98+
)
7399

74100
root.right = build_tree_from_post(
75-
postorder, post_start + nums_left, post_end - 1,
76-
inorder_seq, in_root_index + 1, in_end, in_map)
101+
postorder,
102+
post_start + nums_left,
103+
post_end - 1,
104+
inorder_seq,
105+
in_root_index + 1,
106+
in_end,
107+
in_map,
108+
)
77109

78110
return root
79111

@@ -82,8 +114,14 @@ def build_tree_post(inorder_seq, postorder_seq):
82114
"""Wrapper function for building tree from postorder + inorder."""
83115
in_map = {val: i for i, val in enumerate(inorder_seq)}
84116
return build_tree_from_post(
85-
postorder_seq, 0, len(postorder_seq) - 1,
86-
inorder_seq, 0, len(inorder_seq) - 1, in_map)
117+
postorder_seq,
118+
0,
119+
len(postorder_seq) - 1,
120+
inorder_seq,
121+
0,
122+
len(inorder_seq) - 1,
123+
in_map,
124+
)
87125

88126

89127
# === Example ===

0 commit comments

Comments
 (0)