pennz/DataViz

View on GitHub
examples/avltree/avltree.go

Summary

Maintainability
A
2 hrs
Test Coverage
// Copyright (c) 2015, Emir Pasic. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package main

import (
    "fmt"
    avl "github.com/emirpasic/gods/trees/avltree"
)

// AVLTreeExample to demonstrate basic usage of AVLTree
func main() {
    tree := avl.NewWithIntComparator() // empty(keys are of type int)

    tree.Put(1, "x") // 1->x
    tree.Put(2, "b") // 1->x, 2->b (in order)
    tree.Put(1, "a") // 1->a, 2->b (in order, replacement)
    tree.Put(3, "c") // 1->a, 2->b, 3->c (in order)
    tree.Put(4, "d") // 1->a, 2->b, 3->c, 4->d (in order)
    tree.Put(5, "e") // 1->a, 2->b, 3->c, 4->d, 5->e (in order)
    tree.Put(6, "f") // 1->a, 2->b, 3->c, 4->d, 5->e, 6->f (in order)

    fmt.Println(tree)
    //
    //  AVLTree
    //  │       ┌── 6
    //  │   ┌── 5
    //  └── 4
    //      │   ┌── 3
    //      └── 2
    //          └── 1

    _ = tree.Values() // []interface {}{"a", "b", "c", "d", "e", "f"} (in order)
    _ = tree.Keys()   // []interface {}{1, 2, 3, 4, 5, 6} (in order)

    tree.Remove(2) // 1->a, 3->c, 4->d, 5->e, 6->f (in order)
    fmt.Println(tree)
    //
    //  AVLTree
    //  │       ┌── 6
    //  │   ┌── 5
    //  └── 4
    //      └── 3
    //          └── 1

    tree.Clear() // empty
    tree.Empty() // true
    tree.Size()  // 0
}