Skip to content

Commit 4fc1033

Browse files
committed
minor refactor
1 parent 32d1154 commit 4fc1033

File tree

4 files changed

+51
-56
lines changed

4 files changed

+51
-56
lines changed

src/008.py

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -28,22 +28,7 @@
2828
2929
"""
3030

31-
32-
class TreeNode:
33-
def __init__(self, val: int, left: object = None, right: object = None):
34-
self.val = val
35-
self.left = left
36-
self.right = right
37-
38-
def print(self):
39-
print(self.val)
40-
41-
def print_inorder(self):
42-
if self.left:
43-
self.print_inorder(self.left)
44-
self.print()
45-
if self.right:
46-
self.print_inorder(self.right)
31+
from ds.classes import TreeNode
4732

4833

4934
def getUnivalTreeNum(node: object) -> int:
@@ -84,3 +69,7 @@ def test_8():
8469
),
8570
)
8671
assert getUnivalTreeNum(root) == 5
72+
73+
74+
if __name__ == "__main__":
75+
test_8()

src/020.py

Lines changed: 7 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -35,21 +35,7 @@
3535
use next pointer to point to its previous.
3636
"""
3737

38-
39-
class LinkedNode:
40-
def __init__(self, val):
41-
self.val = val
42-
self.next = None
43-
44-
def print(self):
45-
node = self
46-
s = ""
47-
while node:
48-
s += str(node.val)
49-
if node.next:
50-
s += "->"
51-
node = node.next
52-
print(s)
38+
from ds.classes import LinkedNode
5339

5440

5541
def revert(head):
@@ -62,20 +48,6 @@ def revert(head):
6248
return pre
6349

6450

65-
def createLinkedList(nums):
66-
head, pre = None, None
67-
68-
for num in nums:
69-
node = LinkedNode(num)
70-
if not head:
71-
head = node
72-
pre = node
73-
else:
74-
pre.next = node
75-
pre = node
76-
return head
77-
78-
7951
def getIntersectingNode(head1, head2):
8052
# edge case: if either list is None, there is no intersection
8153
if not head1 or not head2:
@@ -97,8 +69,8 @@ def getIntersectingNode(head1, head2):
9769

9870

9971
def runOneTest20(array_one, array_two, expected):
100-
head1 = createLinkedList(array_one)
101-
head2 = createLinkedList(array_two)
72+
head1 = LinkedNode.createLinkedList(array_one)
73+
head2 = LinkedNode.createLinkedList(array_two)
10274
if not expected:
10375
assert getIntersectingNode(head1, head2) is None
10476
else:
@@ -121,3 +93,7 @@ def test_20():
12193
array_one = [1, 15, 20, 16, 10]
12294
array_two = [1, 15, 20, 16, 10]
12395
runOneTest20(array_one, array_two, 1)
96+
97+
98+
if __name__ == "__main__":
99+
test_20()

src/067.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,11 @@
5050
5151
"""
5252

53-
from ds.classes import DoubleLinkedList, ListNode
53+
from ds.classes import DoubleLinkedList, DoubleLinkedNode
5454

5555

5656
# !! class inheritance
57-
class LFUNode(ListNode):
57+
class LFUNode(DoubleLinkedNode):
5858
def __init__(self, key, value):
5959
super().__init__(key, value)
6060
self.freq = 1

src/ds/classes.py

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,34 @@
1-
class ListNode:
1+
class LinkedNode:
2+
def __init__(self, val):
3+
self.val = val
4+
self.next = None
5+
6+
def print(self):
7+
node = self
8+
s = ""
9+
while node:
10+
s += str(node.val)
11+
if node.next:
12+
s += "->"
13+
node = node.next
14+
print(s)
15+
16+
@staticmethod
17+
def createLinkedList(nums):
18+
head, pre = None, None
19+
20+
for num in nums:
21+
node = LinkedNode(num)
22+
if not head:
23+
head = node
24+
pre = node
25+
else:
26+
pre.next = node
27+
pre = node
28+
return head
29+
30+
31+
class DoubleLinkedNode:
232
def __init__(self, key, value):
333
self.key = key
434
self.value = value
@@ -11,8 +41,8 @@ def __init__(self, key, value):
1141
# !! use dummy head and tail to simplify code
1242
class DoubleLinkedList:
1343
def __init__(self):
14-
self.head = ListNode(None, None)
15-
self.tail = ListNode(None, None)
44+
self.head = DoubleLinkedNode(None, None)
45+
self.tail = DoubleLinkedNode(None, None)
1646
self.head.next = self.tail
1747
self.tail.pre = self.head
1848

@@ -27,8 +57,8 @@ def addToHead(self, node):
2757
self.head.next = node
2858
node.list = self
2959

30-
def add(self, key, value) -> ListNode:
31-
node = ListNode(key, value)
60+
def add(self, key, value) -> DoubleLinkedNode:
61+
node = DoubleLinkedNode(key, value)
3262
self.addToHead(node)
3363
return node
3464

@@ -43,15 +73,15 @@ def moveToHead(self, node) -> None:
4373
self.removeNode(node)
4474
self.addToHead(node)
4575

46-
def removeHead(self) -> ListNode:
76+
def removeHead(self) -> DoubleLinkedNode:
4777
if self.isEmpty():
4878
return
4979
node = self.head.next
5080
self.head.next = node.next
5181
node.next.pre = self.head
5282
return node
5383

54-
def removeTail(self) -> ListNode:
84+
def removeTail(self) -> DoubleLinkedNode:
5585
if self.isEmpty():
5686
return
5787
node = self.tail.pre

0 commit comments

Comments
 (0)