Chi
05/13/2019, 4:40 PM!! in my while loop, while I already check node.right will never be nullShawn
05/13/2019, 4:40 PMval is needed for smart-casting to workstreetsofboston
05/13/2019, 4:41 PMnode.right right
after the null checkShawn
05/13/2019, 4:41 PMChi
05/13/2019, 4:42 PMstreetsofboston
05/13/2019, 4:43 PMwhile (node?.right != null) {
node = node?.right
}streetsofboston
05/13/2019, 4:44 PM.right of the node(s).Dico
05/13/2019, 4:46 PMwhile (true) {
node = node.right ?: break
}Shawn
05/13/2019, 4:48 PMtailrec funDico
05/13/2019, 4:49 PMShawn
05/13/2019, 4:50 PMStephan Schroeder
05/14/2019, 8:57 AMprivate fun predecessor(): Int {
var node = this.left!!
var rightNode = node.right
while (rightNode != null) {
rightNode = rightNode.right
}
return rightNode?.data ?: node.data
}Stephan Schroeder
05/14/2019, 9:34 AMprivate fun predecessor(): Int {
tailrec fun getRightMostData(node: Node): Int {
val rightNode = node.right
return if(rightNode==null) node.data
else getRightMostData(rightNode)
}
return getRightMostData(this.left!!)
}