11
2+
23class TreeNode :
34 def __init__ (self , key = None , parent = None , leftChild = None , rightChild = None ):
45 self .key = key
56 self .parent = parent
67 self .leftChild = leftChild
78 self .rightChild = rightChild
89
9- def isRoot (self )-> bool :
10- return self .parent is None
11-
12- def hasParent (self )-> bool :
13- return self .parent is not None
14-
15- def isLeftChild (self )-> bool :
16- return self .parent .leftChild == self
17-
18- def isRightChild (self )-> bool :
19- return self .parent .rightChild == self
20-
2110 def hasLeftChild (self )-> bool :
2211 return self .leftChild is not None
2312
2413 def hasRightChild (self )-> bool :
2514 return self .rightChild is not None
2615
27- def hasBothChildren (self ):
16+ def hasBothChildren (self )-> bool :
2817 return self .hasLeftChild () and self .hasRightChild ()
2918
30- def isLeaf (self ):
19+ def isLeaf (self )-> bool :
3120 return not self .hasLeftChild () and not self .hasRightChild ()
3221
22+ def isLeftChild (self )-> bool :
23+ return self .parent .leftChild == self
24+
25+ def isRightChild (self )-> bool :
26+ return self .parent .rightChild == self
27+
3328 def findMin (self ):
34- if self . hasLeftChild ():
35- return self . leftChild . findMin ()
36- else :
37- return self
38-
29+ node = self
30+ while node . leftChild is not None :
31+ node = node . leftChild
32+ return node
33+
3934 def findMax (self ):
40- if self .hasRightChild ():
41- return self .rightChild .findMax ()
42- else :
43- return self
44-
45- def inorder (self ):
46- if self is not None :
47- if self .leftChild is not None :
48- self .leftChild .inorder ()
49- print (self .key , end = ", " )
50- if self .rightChild is not None :
51- self .rightChild .inorder ()
35+ node = self
36+ while node .rightChild is not None :
37+ node = node .rightChild
38+ return node
0 commit comments