11
2+
23class TreeNode :
3- def __init__ (self , key = None , parent = None , leftChild = None , rightChild = None ,
4- balanceFactor = 0 , leftSubtreeHeight = 0 , rightSubtreeHeight = 0 ):
4+ def __init__ (self , key = None , parent = None , leftChild = None , rightChild = None ,
5+ leftSubtreeHeight : int = 0 , rightSubtreeHeight : int = 0 , balanceFactor : int = 0 ):
56 self .key = key
67 self .parent = parent
78 self .leftChild = leftChild
89 self .rightChild = rightChild
9- self .balanceFactor = 0
1010 self .leftSubtreeHeight = leftSubtreeHeight
1111 self .rightSubtreeHeight = rightSubtreeHeight
12-
13- def isRoot (self )-> bool :
14- return self .parent is None
12+ self .balanceFactor = balanceFactor
1513
1614 def hasParent (self )-> bool :
1715 return self .parent is not None
1816
19- def isLeftChild (self )-> bool :
20- return self .parent .leftChild == self
21-
22- def isRightChild (self )-> bool :
23- return self .parent .rightChild == self
24-
2517 def hasLeftChild (self )-> bool :
2618 return self .leftChild is not None
2719
2820 def hasRightChild (self )-> bool :
2921 return self .rightChild is not None
3022
31- def hasBothChildren (self ):
23+ def hasBothChildren (self )-> bool :
3224 return self .hasLeftChild () and self .hasRightChild ()
3325
34- def isLeaf (self ):
26+ def isLeaf (self )-> bool :
3527 return not self .hasLeftChild () and not self .hasRightChild ()
3628
29+ def isLeftChild (self )-> bool :
30+ return self .parent .leftChild == self
31+
32+ def isRightChild (self )-> bool :
33+ return self .parent .rightChild == self
34+
3735 def findMin (self ):
38- if self . hasLeftChild ():
39- return self . leftChild . findMin ()
40- else :
41- return self
42-
36+ node = self
37+ while node . leftChild is not None :
38+ node = node . leftChild
39+ return node
40+
4341 def findMax (self ):
44- if self .hasRightChild ():
45- return self .rightChild .findMax ()
46- else :
47- return self
48-
49- def inorder (self ):
50- if self is not None :
51- if self .leftChild is not None :
52- self .leftChild .inorder ()
53- print (self .key , end = ", " )
54- if self .rightChild is not None :
55- self .rightChild .inorder ()
42+ node = self
43+ while node .rightChild is not None :
44+ node = node .rightChild
45+ return node
0 commit comments