@@ -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