mirror of
https://github.com/krahets/hello-algo.git
synced 2025-11-02 12:58:42 +08:00
Update binary_search_tree.go
This commit is contained in:
@ -68,13 +68,13 @@ func (bst *binarySearchTree) insert(num int) *TreeNode {
|
||||
return nil
|
||||
}
|
||||
// 待插入结点之前的结点位置
|
||||
var prev *TreeNode = nil
|
||||
var pre *TreeNode = nil
|
||||
// 循环查找,越过叶结点后跳出
|
||||
for cur != nil {
|
||||
if cur.Val == num {
|
||||
return nil
|
||||
}
|
||||
prev = cur
|
||||
pre = cur
|
||||
if cur.Val < num {
|
||||
cur = cur.Right
|
||||
} else {
|
||||
@ -83,10 +83,10 @@ func (bst *binarySearchTree) insert(num int) *TreeNode {
|
||||
}
|
||||
// 插入结点
|
||||
node := NewTreeNode(num)
|
||||
if prev.Val < num {
|
||||
prev.Right = node
|
||||
if pre.Val < num {
|
||||
pre.Right = node
|
||||
} else {
|
||||
prev.Left = node
|
||||
pre.Left = node
|
||||
}
|
||||
return cur
|
||||
}
|
||||
@ -99,13 +99,13 @@ func (bst *binarySearchTree) remove(num int) *TreeNode {
|
||||
return nil
|
||||
}
|
||||
// 待删除结点之前的结点位置
|
||||
var prev *TreeNode = nil
|
||||
var pre *TreeNode = nil
|
||||
// 循环查找,越过叶结点后跳出
|
||||
for cur != nil {
|
||||
if cur.Val == num {
|
||||
break
|
||||
}
|
||||
prev = cur
|
||||
pre = cur
|
||||
if cur.Val < num {
|
||||
// 待删除结点在右子树中
|
||||
cur = cur.Right
|
||||
@ -128,10 +128,10 @@ func (bst *binarySearchTree) remove(num int) *TreeNode {
|
||||
child = cur.Right
|
||||
}
|
||||
// 将子结点替换为待删除结点
|
||||
if prev.Left == cur {
|
||||
prev.Left = child
|
||||
if pre.Left == cur {
|
||||
pre.Left = child
|
||||
} else {
|
||||
prev.Right = child
|
||||
pre.Right = child
|
||||
}
|
||||
// 子结点数为 2
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user