func (t *Tree) Delete(value int) bool {
if t.Search(value) {
currentNode := t.root
for currentNode != nil {
if value == currentNode.value {
if currentNode.left == nil && currentNode.right == nil {
currentNode = nil
return true
}
} else if value < currentNode.value {
currentNode = currentNode.left
} else {
currentNode = currentNode.right
}
}
}
return false
}
Есть такая функция для удаления элемента в бинарном дереве(она недописанная и удаляет элемент только в том случае, если у удаляемого элемента нет потомков). Рассмотрим случай, когда у нас в дереве есть только root: В функции currentNode , в таком случае, будет указывать на root, но при присвоении currentNode = nil - root не изменяется. Почему так происходит?