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 fun
Dico
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!!)
}