-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtree.py
71 lines (57 loc) · 1.71 KB
/
tree.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
69
70
71
class BinaryTree:
def __init__(self, rootObj):
self.key = rootObj
self.leftChild = None
self.rightChild = None
def insertLeft(self, newNodeVal):
if self.leftChild == None:
self.leftChild = BinaryTree(newNodeVal)
else:
t = BinaryTree(newNodeVal)
t.leftChild = self.leftChild
self.leftChild = t
def insertRight(self, newNodeVal):
if self.rightChild == None:
self.rightChild = BinaryTree(newNodeVal)
else:
t = BinaryTree(newNodeVal)
t.rightChild = self.rightChild
self.rightChild = t
def getRightChild(self):
return self.rightChild
def getLeftChild(self):
return self.leftChild
def getRootVal(self):
return self.key
def setRootVal(self, obj):
self.key = obj
def __str__(self):
s = f"{self.key}"
if self.leftChild:
s += f"[{str(self.leftChild)}]"
else:
s += "[]"
if self.rightChild:
s += f"[{str(self.rightChild)}]"
else:
s += "[]"
return s
if __name__ == '__main__':
r = BinaryTree('a')
print(r)
assert str(r) == 'a[][]'
r.insertLeft('b')
r.insertRight('c')
print(r)
assert str(r) == 'a[b[][]][c[][]]'
r.getLeftChild().insertLeft('d')
r.getLeftChild().insertRight('e')
r.getRightChild().insertLeft('f')
print(r)
assert str(r) == 'a[b[d[][]][e[][]]][c[f[][]][]]'
print(r.getRootVal())
assert r.getRootVal() == 'a'
print(r.getLeftChild())
assert str(r.getLeftChild()) == 'b[d[][]][e[][]]'
print(r.getRightChild())
assert str(r.getRightChild()) == 'c[f[][]][]'