@@ -14,14 +14,14 @@ def __init__(self, key):
14
14
def recursive_search (node , key ):
15
15
if node is None :
16
16
print (f"{ key } was not found in the tree" )
17
- return
17
+ return None
18
18
if node .key == key :
19
19
print (f"{ key } was found in the tree" )
20
20
return node
21
21
if key > node .key :
22
- recursive_search (node .right , key )
22
+ return recursive_search (node .right , key )
23
23
else :
24
- recursive_search (node .left , key )
24
+ return recursive_search (node .left , key )
25
25
26
26
def linear_search (node , key ):
27
27
while node is not None :
@@ -36,7 +36,7 @@ def linear_search(node, key):
36
36
# Insertion Method
37
37
def insert (node , key ):
38
38
if node is None :
39
- node = TreeNode (key )
39
+ return TreeNode (key )
40
40
else :
41
41
if key < node .key :
42
42
node .left = insert (node .left , key )
@@ -45,42 +45,37 @@ def insert(node, key):
45
45
return node
46
46
47
47
# Printing Methods
48
- PRINT_TREE = ""
49
-
50
48
def pre_order (node ):
51
- global PRINT_TREE
52
49
if node is None :
53
- return
54
- PRINT_TREE += str (node .key ) + ", "
55
- pre_order (node .left )
56
- pre_order (node .right )
50
+ return []
51
+ result = [node .key ]
52
+ result .extend (pre_order (node .left ))
53
+ result .extend (pre_order (node .right ))
54
+ return result
57
55
58
56
def in_order (node ):
59
- global PRINT_TREE
60
57
if node is None :
61
- return
62
- in_order (node .left )
63
- PRINT_TREE += str (node .key ) + ", "
64
- in_order (node .right )
58
+ return []
59
+ result = []
60
+ result .extend (in_order (node .left ))
61
+ result .append (node .key )
62
+ result .extend (in_order (node .right ))
63
+ return result
65
64
66
65
def post_order (node ):
67
- global PRINT_TREE
68
66
if node is None :
69
- return
70
- post_order (node .left )
71
- post_order (node .right )
72
- PRINT_TREE += str (node .key ) + ", "
67
+ return []
68
+ result = []
69
+ result .extend (post_order (node .left ))
70
+ result .extend (post_order (node .right ))
71
+ result .append (node .key )
72
+ return result
73
73
74
74
# Finding the Tree's Height
75
- def maximum (a , b ):
76
- if a > b :
77
- return a
78
- return b
79
-
80
75
def tree_height (node ):
81
76
if node is None :
82
77
return 0
83
- return 1 + maximum (tree_height (node .left ), tree_height (node .right ))
78
+ return 1 + max (tree_height (node .left ), tree_height (node .right ))
84
79
85
80
# Deletion Methods
86
81
def find_parent (node , ch ):
@@ -117,15 +112,13 @@ def delete(node, ch):
117
112
parent .right = substitute
118
113
else :
119
114
parent .left = substitute
120
- # Free(current)
121
115
else :
122
116
substitute = largest_on_left (current )
123
117
current .key = substitute .key
124
118
if substitute .left is not None :
125
119
current .left = substitute .left
126
120
else :
127
121
current .left = None
128
- # Free(substitute)
129
122
return True
130
123
131
124
if __name__ == "__main__" :
@@ -140,9 +133,8 @@ def delete(node, ch):
140
133
tree = insert (tree , 7 )
141
134
tree = insert (tree , 0 )
142
135
143
- recursive_search (tree , 6 ) # Search that prints within the function
144
-
145
- if linear_search (tree , 6 ) is not None : # Returns the NODE or None if not found
136
+ result = recursive_search (tree , 6 )
137
+ if result is not None :
146
138
print ("Value found" )
147
139
else :
148
140
print ("Value not found" )
@@ -156,15 +148,9 @@ def delete(node, ch):
156
148
delete (tree , 3 )
157
149
158
150
# Call printing methods
159
- PRINT_TREE = ""
160
- pre_order (tree )
161
- print (f"PreOrder: { PRINT_TREE } " )
162
- PRINT_TREE = ""
163
- in_order (tree )
164
- print (f"InOrder: { PRINT_TREE } " )
165
- PRINT_TREE = ""
166
- post_order (tree )
167
- print (f"PostOrder: { PRINT_TREE } " )
151
+ print (f"PreOrder: { pre_order (tree )} " )
152
+ print (f"InOrder: { in_order (tree )} " )
153
+ print (f"PostOrder: { post_order (tree )} " )
168
154
169
155
# Display the height of the tree after removing items
170
156
print (f"Height: { tree_height (tree )} " )
0 commit comments