From fae29a732d7d23a1932501f79a7fda3a68b8b01a Mon Sep 17 00:00:00 2001 From: Emir Pasic Date: Thu, 5 Mar 2015 15:05:12 +0100 Subject: [PATCH] red-black tree Clear() method --- trees/redblacktree/redblacktree.go | 8 +++++++- trees/redblacktree/redblacktree_test.go | 9 +++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/trees/redblacktree/redblacktree.go b/trees/redblacktree/redblacktree.go index e54c1f0..fb02cca 100644 --- a/trees/redblacktree/redblacktree.go +++ b/trees/redblacktree/redblacktree.go @@ -164,7 +164,7 @@ func (tree *Tree) Keys() []interface{} { return keys } -// Returns all values in-order based on the key +// Returns all values in-order based on the key. func (tree *Tree) Values() []interface{} { values := make([]interface{}, tree.size) for i, node := range tree.inOrder() { @@ -173,6 +173,12 @@ func (tree *Tree) Values() []interface{} { return values } +// Removes all nodes from the tree. +func (tree *Tree) Clear() { + tree.root = nil + tree.size = 0 +} + func (tree *Tree) String() string { str := "RedBlackTree\n" if !tree.Empty() { diff --git a/trees/redblacktree/redblacktree_test.go b/trees/redblacktree/redblacktree_test.go index d3e9341..73c6efa 100644 --- a/trees/redblacktree/redblacktree_test.go +++ b/trees/redblacktree/redblacktree_test.go @@ -141,4 +141,13 @@ func TestRedBlackTree(t *testing.T) { t.Errorf("Got %v expected %v", actualValue, true) } + tree.Put(1, "a") + tree.Put(2, "b") + tree.Clear() + + // Test Empty() + if actualValue := tree.Empty(); actualValue != true { + t.Errorf("Got %v expected %v", actualValue, true) + } + }