RosettaCodeData/Task/AVL-tree/Go/avl-tree-2.go
2023-07-01 13:44:08 -04:00

43 lines
859 B
Go

package main
import (
"encoding/json"
"fmt"
"log"
"avl"
)
type intKey int
// satisfy avl.Key
func (k intKey) Less(k2 avl.Key) bool { return k < k2.(intKey) }
func (k intKey) Eq(k2 avl.Key) bool { return k == k2.(intKey) }
// use json for cheap tree visualization
func dump(tree *avl.Node) {
b, err := json.MarshalIndent(tree, "", " ")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(b))
}
func main() {
var tree *avl.Node
fmt.Println("Empty tree:")
dump(tree)
fmt.Println("\nInsert test:")
avl.Insert(&tree, intKey(3))
avl.Insert(&tree, intKey(1))
avl.Insert(&tree, intKey(4))
avl.Insert(&tree, intKey(1))
avl.Insert(&tree, intKey(5))
dump(tree)
fmt.Println("\nRemove test:")
avl.Remove(&tree, intKey(3))
avl.Remove(&tree, intKey(1))
dump(tree)
}