Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit bbd4485

Browse files
committed
Add new examples
1 parent c5b80c2 commit bbd4485

File tree

5 files changed

+208
-1
lines changed

5 files changed

+208
-1
lines changed

README.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,9 @@ files, and the full tutorial for each collection of code is available below.
4444
37. [Python Datetime Module Tutorial](https://vegibit.com/python-datetime-module-tutorial/)
4545
38. [Python os Module Tutorial](https://vegibit.com/python-os-module-tutorial/)
4646
39. [What Is A Python Decorator](https://vegibit.com/what-is-a-python-decorator/)
47-
40. [What Is if \_\_name\_\_ == "\_\_main\_\_": main()](https://vegibit.com/python-if-__name__-__main__-main/)
47+
40. [What Is if \_\_name\_\_ == "\_\_main\_\_": main()](https://vegibit.com/python-if-__name__-__main__-main/)
48+
41. [What Is A Pandas Dataframe](https://vegibit.com/what-is-a-pandas-dataframe/)
49+
42. [Python Stack Data Structure](https://vegibit.com/python-stack-data-structure/)
50+
43. [Python Queue Example](https://vegibit.com/python-queue-example/)
51+
44. [Python Deque Vs Queue](https://vegibit.com/python-deque-vs-queue/)
52+
45. [Python Binary Search Tree](https://vegibit.com/python-binary-search-tree/)

deque.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
class Deque:
2+
3+
def __init__(self):
4+
self.items = []
5+
6+
def add_front(self, item):
7+
self.items.insert(0, item)
8+
9+
def add_rear(self, item):
10+
self.items.append(item)
11+
12+
def remove_front(self):
13+
if self.items:
14+
return self.items.pop(0)
15+
return None
16+
17+
def remove_rear(self):
18+
if self.items:
19+
return self.items.pop()
20+
return None
21+
22+
def peek_front(self):
23+
if self.items:
24+
return self.items[0]
25+
return None
26+
27+
def peek_rear(self):
28+
if self.items:
29+
return self.items[-1]
30+
return None
31+
32+
def size(self):
33+
return len(self.items)
34+
35+
def is_empty(self):
36+
return self.items == []

queue.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
class Queue:
2+
def __init__(self):
3+
self.items = []
4+
5+
def enqueue(self, item):
6+
self.items.insert(0, item)
7+
8+
def dequeue(self):
9+
if self.items:
10+
return self.items.pop()
11+
else:
12+
return None
13+
14+
def size(self):
15+
return len(self.items)
16+
17+
def peek(self):
18+
if self.items:
19+
return self.items[-1]
20+
else:
21+
return None
22+
23+
def is_empty(self):
24+
return self.items == []

stack.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
class Stack:
2+
def __init__(self):
3+
self.items = []
4+
5+
def push(self, item):
6+
self.items.append(item)
7+
8+
def pop(self):
9+
if self.items:
10+
return self.items.pop()
11+
else:
12+
return None
13+
14+
def size(self):
15+
return len(self.items)
16+
17+
def is_empty(self):
18+
return self.items == []
19+
20+
def peek(self):
21+
if self.items:
22+
return self.items[-1]
23+
else:
24+
return None

tree.py

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
class Node:
2+
def __init__(self, data):
3+
self.data = data
4+
self.left = None
5+
self.right = None
6+
7+
def traversePreorder(self):
8+
print(self.data)
9+
if self.left:
10+
self.left.traversePreorder()
11+
if self.right:
12+
self.right.traversePreorder()
13+
14+
def traverseInorder(self):
15+
if self.left:
16+
self.left.traverseInorder()
17+
print(self.data)
18+
if self.right:
19+
self.right.traverseInorder()
20+
21+
def traversePostorder(self):
22+
if self.left:
23+
self.left.traversePostorder()
24+
if self.right:
25+
self.right.traversePostorder()
26+
print(self.data)
27+
28+
def search(self, target):
29+
if self.data == target:
30+
print("Found it!")
31+
return self
32+
33+
if self.left and self.data > target:
34+
return self.left.search(target)
35+
36+
if self.right and self.data < target:
37+
return self.right.search(target)
38+
39+
print("Value is not in tree")
40+
41+
def getNodesAtDepth(self, depth, nodes=[]):
42+
if depth == 0:
43+
nodes.append(self.data)
44+
return nodes
45+
46+
if self.left:
47+
self.left.getNodesAtDepth(depth - 1, nodes)
48+
else:
49+
nodes.extend([None] * 2 ** (depth - 1))
50+
51+
if self.right:
52+
self.right.getNodesAtDepth(depth - 1, nodes)
53+
else:
54+
nodes.extend([None] * 2 ** (depth - 1))
55+
return nodes
56+
57+
def height(self, h=0):
58+
leftHeight = self.left.height(h + 1) if self.left else h
59+
rightHeight = self.right.height(h + 1) if self.right else h
60+
return max(leftHeight, rightHeight)
61+
62+
63+
class Tree:
64+
def __init__(self, root, name=''):
65+
self.root = root
66+
self.name = name
67+
68+
def _nodeToChar(self, n, spacing):
69+
if n is None:
70+
return '_' + (' ' * spacing)
71+
spacing = spacing - len(str(n)) + 1
72+
return str(n) + (' ' * spacing)
73+
74+
def print(self, label=''):
75+
print(self.name + ' ' + label)
76+
height = self.root.height()
77+
spacing = 3
78+
width = int((2 ** height - 1) * (spacing + 1) + 1)
79+
# Root offset
80+
offset = int((width - 1) / 2)
81+
for depth in range(0, height + 1):
82+
if depth > 0:
83+
# print directional lines
84+
print(' ' * (offset + 1) + (' ' * (spacing + 2)).join(['/' + (' ' * (spacing - 2)) + '\\'] * (2 ** (depth - 1))))
85+
row = self.root.getNodesAtDepth(depth, [])
86+
print((' ' * offset) + ''.join([self._nodeToChar(n, spacing) for n in row]))
87+
spacing = offset + 1
88+
offset = int(offset / 2) - 1
89+
print('')
90+
91+
def traverseInorder(self):
92+
self.root.traverseInorder()
93+
94+
def traversePreorder(self):
95+
self.root.traversePreorder()
96+
97+
def traversePostorder(self):
98+
self.root.traversePostorder()
99+
100+
def search(self, target):
101+
return self.root.search(target)
102+
103+
def getNodesAtDepth(self, depth):
104+
return self.root.getNodesAtDepth(depth)
105+
106+
def height(self):
107+
return self.root.height()
108+
109+
110+
tree = Tree(Node(20))
111+
tree.root.left = Node(15)
112+
tree.root.right = Node(25)
113+
tree.root.left.left = Node(12)
114+
tree.root.left.right = Node(16)
115+
tree.root.right.left = Node(23)
116+
tree.root.right.right = Node(100)
117+
118+
tree.print()

0 commit comments

Comments
 (0)