mirror of
https://github.com/Luzifer/ansible-role-version.git
synced 2024-12-23 19:11:20 +00:00
51 lines
1.3 KiB
Go
51 lines
1.3 KiB
Go
|
// 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 examples
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
avl "github.com/emirpasic/gods/trees/avltree"
|
||
|
)
|
||
|
|
||
|
// AVLTreeExample to demonstrate basic usage of AVLTree
|
||
|
func AVLTreeExample() {
|
||
|
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
|
||
|
}
|