Fix the return type of binary search tree and avl tree

This commit is contained in:
krahets
2023-04-14 05:47:20 +08:00
parent 9c9c8b7574
commit f7ae9c8a02
24 changed files with 247 additions and 451 deletions

View File

@@ -57,10 +57,10 @@ class BinarySearchTree {
}
/* */
func insert(num: Int) -> TreeNode? {
func insert(num: Int) {
//
if root == nil {
return nil
return
}
var cur = root
var pre: TreeNode?
@@ -68,7 +68,7 @@ class BinarySearchTree {
while cur != nil {
//
if cur!.val == num {
return nil
return
}
pre = cur
// cur
@@ -87,15 +87,14 @@ class BinarySearchTree {
} else {
pre?.left = node
}
return node
}
/* */
@discardableResult
func remove(num: Int) -> TreeNode? {
func remove(num: Int) {
//
if root == nil {
return nil
return
}
var cur = root
var pre: TreeNode?
@@ -117,7 +116,7 @@ class BinarySearchTree {
}
//
if cur == nil {
return nil
return
}
// = 0 or 1
if cur?.left == nil || cur?.right == nil {
@@ -133,27 +132,15 @@ class BinarySearchTree {
// = 2
else {
// cur
let nex = getInOrderNext(root: cur?.right)
let tmp = nex!.val
// nex
remove(num: nex!.val)
// nex cur
cur?.val = tmp
let tmp = cur?.right
while tmp?.left != nil {
tmp = tmp?.left
}
// tmp
remove(num: tmp!.val)
// tmp cur
cur?.val = tmp!.val
}
return cur
}
/* root */
func getInOrderNext(root: TreeNode?) -> TreeNode? {
var root = root
if root == nil {
return root
}
// 访
while root?.left != nil {
root = root?.left
}
return root
}
}
@@ -172,7 +159,7 @@ enum _BinarySearchTree {
print("\n查找到的节点对象为 \(node!),节点值 = \(node!.val)")
/* */
node = bst.insert(num: 16)
bst.insert(num: 16)
print("\n插入节点 16 后,二叉树为\n")
PrintUtil.printTree(root: bst.getRoot())