From 2e229edfc6c28b3947d4175a6126167203c0f644 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Wed, 29 Jun 2022 23:25:14 -0600 Subject: better rbtree diagnostics --- pkg/rbtree/print_test.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 pkg/rbtree/print_test.go (limited to 'pkg/rbtree/print_test.go') diff --git a/pkg/rbtree/print_test.go b/pkg/rbtree/print_test.go new file mode 100644 index 0000000..c4154c8 --- /dev/null +++ b/pkg/rbtree/print_test.go @@ -0,0 +1,30 @@ +package rbtree + +import ( + "fmt" + "io" + "strings" +) + +func (t *Tree[K, V]) ASCIIArt() string { + var out strings.Builder + t.root.asciiArt(&out, "", "", "") + return out.String() +} + +func (node *Node[V]) asciiArt(w io.Writer, u, m, l string) { + if node == nil { + fmt.Fprintf(w, "%snil\n", m) + return + } + + node.Right.asciiArt(w, u+" ", u+" ,--", u+" | ") + + if node.Color == Red { + fmt.Fprintf(w, "%sR(%v)\n", m, node.Value) + } else { + fmt.Fprintf(w, "%sB(%v)\n", m, node.Value) + } + + node.Left.asciiArt(w, l+" | ", l+" `--", l+" ") +} -- cgit v1.2.3-2-g168b