hello-algo/codes/go/chapter_tree/avl_tree_test.go
Yudong Jin 1c8b7ef559
refactor: Replace 结点 with 节点 (#452)
* Replace 结点 with 节点
Update the footnotes in the figures

* Update mindmap

* Reduce the size of the mindmap.png
2023-04-09 04:32:17 +08:00

54 lines
1.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// File: avl_tree_test.go
// Created Time: 2023-01-08
// Author: Reanon (793584285@qq.com)
package chapter_tree
import (
"fmt"
"testing"
. "github.com/krahets/hello-algo/pkg"
)
func TestAVLTree(t *testing.T) {
/* 初始化空 AVL 树 */
tree := newAVLTree()
/* 插入节点 */
// 请关注插入节点后AVL 树是如何保持平衡的
testInsert(tree, 1)
testInsert(tree, 2)
testInsert(tree, 3)
testInsert(tree, 4)
testInsert(tree, 5)
testInsert(tree, 8)
testInsert(tree, 7)
testInsert(tree, 9)
testInsert(tree, 10)
testInsert(tree, 6)
/* 插入重复节点 */
testInsert(tree, 7)
/* 删除节点 */
// 请关注删除节点后AVL 树是如何保持平衡的
testRemove(tree, 8) // 删除度为 0 的节点
testRemove(tree, 5) // 删除度为 1 的节点
testRemove(tree, 4) // 删除度为 2 的节点
/* 查询节点 */
node := tree.search(7)
fmt.Printf("\n查找到的节点对象为 %#v ,节点值 = %d \n", node, node.Val)
}
func testInsert(tree *aVLTree, val int) {
tree.insert(val)
fmt.Printf("\n插入节点 %d 后AVL 树为 \n", val)
PrintTree(tree.root)
}
func testRemove(tree *aVLTree, val int) {
tree.remove(val)
fmt.Printf("\n删除节点 %d 后AVL 树为 \n", val)
PrintTree(tree.root)
}