Skip to content

Commit eb33020

Browse files
committed
Add some other operations & Tested 😄
1 parent 2a604e7 commit eb33020

File tree

1 file changed

+100
-1
lines changed

1 file changed

+100
-1
lines changed

Tree/BinaryTreePL.py

+100-1
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,111 @@ def searchNode(self, nodeValue):
2525
if self.customList[i] == nodeValue:
2626
return "Success"
2727
return "Value not found"
28+
29+
def preOrderTraversal(self, index):
30+
'''
31+
index: is the position where we start to place node value
32+
In PreOrder:
33+
RootNode => LeftSubTree => RightSubTree
34+
Time: O(n); Space: O(n)
35+
'''
36+
if index > self.lastUsedIndex:
37+
return
38+
print(self.customList[index])
39+
self.preOrderTraversal(index*2)
40+
self.preOrderTraversal(index*2 + 1)
41+
42+
def inOrderTraversal(self, index):
43+
'''
44+
In InOrder:
45+
LeftSubtree => RootNode => RightSubTree
46+
'''
47+
if index > self.lastUsedIndex:
48+
return
49+
50+
self.inOrderTraversal(index*2)
51+
print(self.customList[index])
52+
self.inOrderTraversal(index*2 + 1)
53+
54+
def postOrderTraversal(self, index):
55+
'''
56+
In PostOrder:
57+
LeftSubTree => RightSubTree => RootNode
58+
Time: O(n); Space: O(n)
59+
'''
60+
if index > self.lastUsedIndex:
61+
return
62+
63+
self.postOrderTraversal(index * 2)
64+
self.postOrderTraversal(index*2 + 1)
65+
print(self.customList[index])
66+
67+
# Time: O(n); Space: O(1)
68+
def levelOrderTraversal(self, index):
69+
for i in range(index, self.lastUsedIndex+1):
70+
print(self.customList[i])
71+
72+
# Delete a node from a Binary Tree
73+
# Steps:
74+
# 1. deepest node is lastusedIndex
75+
# 2. Replace the node to be delete by deepest node
76+
# 3. Delete a deepest node from binary tree
77+
# Time: O(n); Space: O(1)
78+
def deleteNode(self, value):
79+
if self.lastUsedIndex == 0:
80+
return "There is not any node to delete"
81+
for i in range(1, self.lastUsedIndex + 1):
82+
if self.customList[i] == value:
83+
self.customList[i] = self.customList[self.lastUsedIndex]
84+
self.customList[self.lastUsedIndex] = None
85+
self.lastUsedIndex -= 1
86+
return "The node has been sucessfully deleted"
87+
88+
def deleteEntireBT(self):
89+
# set customList to None which will erase entire binary tree
90+
# Time: O(1); Space: O(1)
91+
self.customList = None
92+
return "The BT has been sucessfully deleted"
93+
94+
2895

2996
BT = BinaryTree(size=8)
3097
print(BT.insertNode("Gadgets"))
3198
print(BT.insertNode("Ipad"))
3299
print(BT.insertNode("Mobile"))
33100
print(BT.insertNode("IpadEarphone"))
101+
print(BT.insertNode("MobileEarphone"))
102+
print(BT.customList)
103+
'''
104+
105+
Gadgets(1)
106+
/ \
107+
Ipad(2) Mobile(3)
108+
/ \
109+
/ \
110+
IpadEarphone(4) MobileEarphone(5)
111+
112+
In python list looks as:
113+
[None, 'Gadgets', 'Ipad', 'Mobile','IpadEarphone', 'MobileEarphone', None, None]
114+
Note: index is the position where we start to place node value
115+
Use formula: LeftChild = 2*index
116+
RightChild = 2*index + 1
117+
118+
'''
34119
print("####")
35120
print(BT.searchNode("Mobile"))
36-
121+
print("####")
122+
BT.preOrderTraversal(1)
123+
"Output: Gadgets -> Ipad -> IpadEarphone -> MobileEarphone -> Mobile"
124+
print("###")
125+
BT.inOrderTraversal(1)
126+
"Output: IpadEarphone -> Ipad -> MobileEarphone -> Gadgets -> Mobile"
127+
print("###")
128+
BT.postOrderTraversal(1)
129+
"Output: IpadEarphone -> MobileEarphone -> Ipad -> Mobile-> Gadgets"
130+
print("###")
131+
BT.levelOrderTraversal(1)
132+
print("####")
133+
BT.deleteNode("MobileEarphone")
134+
BT.levelOrderTraversal(1)
135+
print(BT.deleteEntireBT())

0 commit comments

Comments
 (0)