Skip to content

Commit 25b8176

Browse files
New Stuff
1 parent ad364d7 commit 25b8176

File tree

22 files changed

+921
-0
lines changed

22 files changed

+921
-0
lines changed
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
class Node:
2+
def __init__(self,isbn,title,author,year,copies):
3+
self.isbn=isbn
4+
self.title=title
5+
self.author=author
6+
self.year=year
7+
self.copies=copies
8+
self.next=None
9+
self.prev=None
10+
class Doubly:
11+
self.tail=None
12+
self.head=None
13+
14+
def append(self,isbn,title,author,year,copies):
15+
new_node=Node(isbn,title,author,year,copies)
16+
if self.head ==None:
17+
self.head=new_node
18+
self.tail=new_node
19+
else:
20+
self.tail.next=new_node
21+
def insert_inorder(self,isbn,title,author,year,copies):
22+
new_node=Node(isbn,title,author,year,copies)
23+
if self.head==None:
24+
self.head=new_node
25+
self.tail=new_node
26+
if year == self.head.year:
27+
new_node.next=self.head
28+
self.head.previous=new_node
29+
self.head=new_node
30+
elif year >self.tail.year:
31+
self.tail.next=new_node
32+
new_node.prev=self.tail
33+
self.tail=new_node
34+
else:
35+
walker=self.head
36+
while(walker.year != None):
37+
walker=walker.next
38+
new_node.next=walker
39+
new_node.previous=walker.previous
40+
walker.previous.next=new_node
41+
walker.previous=new_node
42+
43+
44+
def __str__(self):
45+
46+
file = open("books_data.csv", "r")
47+
L1=Doubly()
48+
for line in file:
49+
list_line = line.strip().split(",")
50+
print(list_line)
51+
def Load_data_from_file():
52+
path="books_data.csv"
53+
file=open(path,"r")
54+
for line in file:
55+
list_line=line.strip.split(",")#based on the delimtter
56+
l1.insert_inorder(list_line[0],list_line[1],list_line[2],list_line[3],list_line[4])
57+
file.close()
58+
def __str__(self):
59+
print_str=""
60+
current=self.head
61+
while(current != None):
62+
print_str+=
63+
def write_file_order():
64+
new_file=open("ordered.txt","w")
65+
walker=L1.head
66+
for j in range(L1.size):
67+
new_file.write(walker.title+", "+walker.year+"\n")
68+
walker=walker.next
69+
new_file.close()
70+
write_file_order()

Salmane_Douch_DS/CaseStudy2/ReadingFile.py

Whitespace-only changes.

Salmane_Douch_DS/CaseStudy2/file.csv

Whitespace-only changes.
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
class Node:
2+
def __init__(self, value):
3+
self.value = value
4+
self.left = None
5+
self.right = None
6+
7+
# Build tree
8+
root = Node(10)
9+
root.left = Node(7)
10+
root.right = Node(12)
11+
root.left.left = Node(55)
12+
root.left.right = Node(9)
13+
root.right.left = Node(4)
14+
root.right.left.right = Node(8)
15+
root.right.left.right.left = Node(2)
16+
17+
# Corrected Functions:
18+
19+
def depth(root, value, l=1):
20+
if root is None:
21+
return None
22+
if root.value == value:
23+
return l
24+
return depth(root.left, value, l+1) or depth(root.right, value, l+1)
25+
26+
def min_depth(root):
27+
if root is None:
28+
return 0
29+
if not root.left and not root.right:
30+
return 1
31+
if not root.left:
32+
return 1 + min_depth(root.right)
33+
if not root.right:
34+
return 1 + min_depth(root.left)
35+
return 1 + min(min_depth(root.left), min_depth(root.right))
36+
37+
def left_view(root, left_list, level=0):
38+
if root is None:
39+
return
40+
if level == len(left_list): # fixed typo
41+
left_list.append(root.value)
42+
left_view(root.left, left_list, level + 1)
43+
left_view(root.right, left_list, level + 1)
44+
45+
def max_sum(root):
46+
if root is None:
47+
return 0
48+
return root.value + max(max_sum(root.left), max_sum(root.right))
49+
50+
# New: Check if tree is balanced
51+
def is_balanced(root):
52+
def height_and_balanced(node):
53+
if node is None:
54+
return (0, True)
55+
lh, left_balanced = height_and_balanced(node.left)
56+
rh, right_balanced = height_and_balanced(node.right)
57+
balanced = abs(lh - rh) <= 1 and left_balanced and right_balanced
58+
return (1 + max(lh, rh), balanced)
59+
_, balanced = height_and_balanced(root)
60+
return balanced
61+
62+
63+
print("Depth of 8:", depth(root, 8)) # should return level
64+
print("Minimum depth:", min_depth(root)) # minimum depth
65+
left_result = []
66+
left_view(root, left_result)
67+
print("Left view:", left_result)
68+
print("Max sum path:", max_sum(root))
69+
print("Is balanced?:", is_balanced(root))
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
path= "bst_file.txt"
2+
file = open("bst_file.csv","r")
3+
for line in file:
4+
print(line.strip().split(","))
5+
6+
class Node:
7+
def __init__(self, key,value):
8+
self.key=key
9+
self.id=id
10+
self.value=value
11+
self.left=None
12+
self.right=None
13+
class BST:
14+
def __init__(self):
15+
self.root=None
16+
def insert(self,root,key,value):
17+
if key <= root.key
18+
if root.left is None:
19+
root.left = Node(key,value)
20+
else:
21+
self.insert(root.left, key,value)
22+
else:
23+
if root.right is None:
24+
root.right = Node(key, value)
25+
else:
26+
self.insert(root.right, key, value)
27+
def apppend(self,key,value):
28+
if self.root is None:
29+
self.root=Node(key,value)
30+
else:
31+
self.insert(self.root,key,value)
32+
def search(self,key):
33+
if self.root is None:
34+
return("Not found")
35+
else:
36+
if(self.root.key < key):
37+
self.root =
38+
39+
40+
41+
bst1 = BST()
42+
for line in file:
43+
print(line.strip().split(""))
44+
key, name, price = line.strip().split(",")
45+
key=int(key)
46+
value =(name,float(price))
47+
48+
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
class Node:
2+
def __init__(self,data):
3+
self.data=data
4+
self.next=None
5+
class StackLL:
6+
def __init__(self):
7+
self.top = None
8+
def push(self,toPush):
9+
new_node=Node(toPush)
10+
new_node.next=self.top
11+
self.top=new_node
12+
def isEmpty(self):
13+
return self.top == None
14+
def pop(self):
15+
if self.isEmpty():
16+
print("Stack underflow")
17+
return None
18+
toRemove=self.top
19+
self.top=self.top.next
20+
return toRemove
21+
def peek(self):
22+
if self.isEmpty():
23+
print("Empty Stack")
24+
return None
25+
else:
26+
return self.top.data
27+
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
1001, Widget A,9.99
2+
1002, Widget B, 12.49
3+
1003, Widget C, 7.50
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
2+
from collections import deque
3+
class Node:
4+
def __init(self):
5+
self.data=data
6+
self.next=None
7+
class queue:
8+
def __init__(self):
9+
self.tail = None
10+
self.head = None
11+
def enqueue(self,value):
12+
new_node=Node(value)
13+
if self.head==None:
14+
self.head=new_node
15+
self.tail=new_node
16+
else:
17+
self.tail.next=new_node
18+
self.tail=new_node
19+
def dequeue(self):
20+
if self.head==None
21+
raise ValueError("queue empty")
22+
else:
23+
return_value = self.head.value
24+
self.head = self.head.next
25+
if self.head == None:
26+
self.tail = None
27+
return return_value
28+
29+
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
class Queues:
2+
class Node:
3+
def __init__(self,element,_next):
4+
self.element=element
5+
self._next=_next
6+
def __init__(self):
7+
self.head=None
8+
self.tail=None
9+
self.size=0
10+
11+
def __len__(self):
12+
return self.size
13+
14+
def isEmpty(self):
15+
return self.size == 0
16+
17+
def enqueue(self,element):
18+
new_node = self.Node(element,None)
19+
if self.isEmpty():
20+
self.head=new_node
21+
else:
22+
self.tail._next=new_node
23+
self.tail=new_node
24+
self.size+=1
25+
26+
def dequeue(self):
27+
if self.isEmpty():
28+
return("Empty Queue")
29+
result=self.head.element
30+
self.head=self.head._next
31+
self.size -=1
32+
return result
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class QueuesList():
2+
def __init__(self):
3+
self.L=[]
4+
5+
def enqueue(self,value):
6+
self.L.append(value)
7+
8+
def dequeu(self):
9+
if self.L==None
10+
return None
11+
else:
12+
return self.L.pop(0)
13+
14+
def peek(self):
15+
if self.isEmpty():
16+
raise ValueError("Queue Empty")
17+
return self.L[0]
18+
19+
def isEmpty(self):
20+
return len(self.L)==0

0 commit comments

Comments
 (0)