From 0566ee594f4371c29fcdfe690ce6670b1093e4bd Mon Sep 17 00:00:00 2001 From: "Stephen M. McQuay" Date: Mon, 3 Sep 2012 21:27:24 -0600 Subject: [PATCH] implemented Same --- exercises/08-ebt/go.go | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/exercises/08-ebt/go.go b/exercises/08-ebt/go.go index ffb3208..cb48d62 100644 --- a/exercises/08-ebt/go.go +++ b/exercises/08-ebt/go.go @@ -12,7 +12,7 @@ func Walk(t *tree.Tree, ch chan int) { // that I can use the range-based forloop in main.main var walk func(t *tree.Tree) walk = func(t *tree.Tree) { - if t == nil { + if t != nil { walk(t.Left) ch <- t.Value walk(t.Right) @@ -24,15 +24,27 @@ func Walk(t *tree.Tree, ch chan int) { // Same determines whether the trees // t1 and t2 contain the same values. -func Same(t1, t2 *tree.Tree) bool +func Same(t1, t2 *tree.Tree) bool { + ch1 := make(chan int) + ch2 := make(chan int) + go Walk(t1, ch1) + go Walk(t2, ch2) + for i := range ch1 { + if i != <-ch2 { + return false + } + } + return true +} func main() { t := tree.New(1) ch := make(chan int) go Walk(t, ch) - fmt.Printf("%v\n", t) for i := range ch { fmt.Printf("%d, ", i) } fmt.Println() + fmt.Println(Same(tree.New(1), tree.New(1))) + fmt.Println(Same(tree.New(1), tree.New(2))) }