Skip to content

Commit 1634534

Browse files
Update
1 parent 6e2d46a commit 1634534

File tree

3 files changed

+47
-37
lines changed

3 files changed

+47
-37
lines changed

Chapter06/binary_search_tree.py

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ def insert(self, data):
1212
node = Node(data)
1313
if self.root_node is None:
1414
self.root_node = node
15-
return
15+
return self.root_node
1616
else:
1717
current = self.root_node
1818
parent = None
@@ -22,20 +22,20 @@ def insert(self, data):
2222
current = current.left_child
2323
if current is None:
2424
parent.left_child = node
25-
return
25+
return self.root_node
2626
else:
2727
current = current.right_child
2828
if current is None:
2929
parent.right_child = node
30-
return
30+
return self.root_node
3131

32-
def inorder(self):
33-
current = self.root_node
32+
def inorder(self, root_node):
33+
current = root_node
3434
if current is None:
3535
return
36-
inorder(current.left_child)
36+
self.inorder(current.left_child)
3737
print(current.data)
38-
inorder(current.right_child)
38+
self.inorder(current.right_child)
3939

4040

4141
def get_node_with_parent(self, data):
@@ -112,8 +112,10 @@ def search(self, data):
112112
current = self.root_node
113113
while True:
114114
if current is None:
115+
print("Item not found")
115116
return None
116117
elif current.data is data:
118+
print("Item found", data)
117119
return data
118120
elif current.data > data:
119121
current = current.left_child
@@ -136,21 +138,29 @@ def find_max(self):
136138

137139

138140

141+
tree = Tree()
142+
r = tree.insert(5)
143+
r = tree.insert(2)
144+
r = tree.insert(7)
145+
r = tree.insert(9)
146+
r = tree.insert(1)
147+
148+
tree.inorder(r)
149+
150+
151+
152+
tree.search(9)
153+
154+
155+
tree.remove(9)
156+
tree.search(9)
157+
139158
tree = Tree()
140159
tree.insert(5)
141160
tree.insert(2)
142161
tree.insert(7)
143162
tree.insert(9)
144163
tree.insert(1)
145164

146-
tree.inorder()
147-
148-
for i in range(1, 10):
149-
found = tree.search(i)
150-
print("{}: {}".format(i, found))
151-
152-
153-
print(tree.find_min())
154-
155-
print(tree.find_max())
156-
165+
print(tree.find_min())
166+
print(tree.find_max())

Chapter10/binary_search_recursive.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ def binary_search_recursive(ordered_list, first_element_index, last_element_inde
1212
return mid_point
1313

1414

15-
store = [2, 4, 5, 12, 43, 54, 60, 77]
16-
print(binary_search_recursive(store, 0, 7, 12))
15+
1716

1817

1918

Chapter10/jump_search.py

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,33 +10,34 @@ def search_ordered(ordered_list, term):
1010

1111

1212

13-
def jump_search(A, item):
13+
def jump_search(ordered_list, item):
14+
import math
1415
print("Entering Jump Search")
15-
n = len(A)
16-
m = int(math.sqrt(n))
16+
list_size = len(ordered_list)
17+
block_size = int(math.sqrt(list_size))
1718
i = 0
18-
while i != len(A)-1 and A[i] <= item:
19-
print("Block under consideration - {}".format(A[i: i+m]))
20-
if i+m > len(A):
21-
m = len(A) - i
22-
B = A[i: i+m]
23-
j = search_ordered(B, item)
19+
while i != len(ordered_list)-1 and ordered_list[i] <= item:
20+
print("Block under consideration - {}".format(ordered_list[i: i+block_size]))
21+
if i+ block_size > len(ordered_list):
22+
block_size = len(ordered_list) - i
23+
block_list = ordered_list[i: i+block_size]
24+
j = search_ordered(block_list, item)
2425
if j == -1:
2526
print("Element not found")
2627
return
2728
return i + j
28-
if A[i+m-1] == item:
29-
return i+m-1
30-
elif A[i+m-1] > item:
31-
B = A[i: i+m-1]
32-
j = search_ordered(B, item)
29+
if ordered_list[i + block_size -1] == item:
30+
return i+block_size-1
31+
elif ordered_list[i + block_size - 1] > item:
32+
block_array = ordered_list[i: i + block_size - 1]
33+
j = search_ordered(block_array, item)
3334
if j == -1:
3435
print("Element not found")
35-
return
36+
return
3637
return i + j
37-
i += m
38+
i += block_size
3839

3940

4041

41-
print(jump_search([1,2,3,4,5,6,7,8,9, 10, 11], 10))
42+
print(jump_search([1,2,3,4,5,6,7,8,9, 10, 11], 8))
4243

0 commit comments

Comments
 (0)