-
Notifications
You must be signed in to change notification settings - Fork 0
/
oct_nov_2021_9618_41.py
68 lines (48 loc) · 1.88 KB
/
oct_nov_2021_9618_41.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# q3
from typing import List, Tuple
NULL: int = -1
def add_node(array_nodes: List[List[int]], root_pointer: int, free_node: int) -> Tuple[int, int]:
if free_node == NULL:
print("heap full")
else:
data: int = int(input("enter data: "))
new_node_pointer = free_node
new_node = array_nodes[new_node_pointer]
free_node = new_node[0]
new_node[0], new_node[1], new_node[2] = NULL, data, NULL
if root_pointer == NULL:
root_pointer = new_node_pointer
else:
direction: int = 0
previous_pointer: int = NULL
current_pointer: int = root_pointer
while current_pointer != NULL:
current_node: List[int] = array_nodes[current_pointer]
previous_pointer: int = current_pointer
current_item: int = current_node[1]
if data < current_item:
direction = 0
else:
direction = 2
current_pointer = current_node[direction]
array_nodes[previous_pointer][direction] = new_node_pointer
return root_pointer, free_node
def q_3():
length: int = 20
array_nodes: List[List[int]] = [[NULL, NULL, NULL] for _ in range(length)]
def print_all():
for array_node in array_nodes:
print(f"{array_node[0]} {array_node[1]} {array_node[2]}")
for index, node in enumerate(array_nodes):
if index != length - 1:
node[0] = index + 1
root_pointer: int = NULL
free_node: int = 0
def in_order(current: int):
if current != NULL:
in_order(array_nodes[current][0])
print(array_nodes[current][1])
in_order(array_nodes[current][2])
for _ in range(10):
root_pointer, free_node = add_node(array_nodes, root_pointer, free_node)
in_order(root_pointer)