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

@ -90,9 +90,8 @@ class AVLTree {
/* */
@discardableResult
func insert(val: Int) -> TreeNode? {
func insert(val: Int) {
root = insertHelper(node: root, val: val)
return root
}
/* */
@ -118,9 +117,8 @@ class AVLTree {
/* */
@discardableResult
func remove(val: Int) -> TreeNode? {
func remove(val: Int) {
root = removeHelper(node: root, val: val)
return root
}
/* */
@ -147,7 +145,10 @@ class AVLTree {
}
} else {
// = 2
let temp = getInOrderNext(node: node?.right)
let temp = node?.right
while temp?.left != nil {
temp = temp?.left
}
node?.right = removeHelper(node: node?.right, val: temp!.val)
node?.val = temp!.val
}
@ -159,19 +160,6 @@ class AVLTree {
return node
}
/* root */
private func getInOrderNext(node: TreeNode?) -> TreeNode? {
var node = node
if node == nil {
return node
}
// 访
while node?.left != nil {
node = node?.left
}
return node
}
/* */
func search(val: Int) -> TreeNode? {
var cur = root

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())