投稿日
2012/4/1 日曜日
A Tour of Goの68 Exercise: Equivalent Binary Treesを自分なりにがんばったので、ここにソースを保存しておきます。(再帰使ってるのがアレですが…)
Go言語を使い始めてまだ1日も経ってないのでGoの作法的にどうなんでしょう。
package main import ( "tour/tree" "fmt" ) // Walk walks the tree t sending all values // from the tree to the channel ch. func Walk(t *tree.Tree, ch chan int) { _walk := func(t *tree.Tree){} _walk = func(t *tree.Tree) { if t.Left != nil { _walk(t.Left) } ch <- t.Value if t.Right != nil { _walk(t.Right) } } _walk(t) close(ch) } // Same determines whether the trees // t1 and t2 contain the same values. func Same(t1, t2 *tree.Tree) bool { ch1 := make(chan int) ch2 := make(chan int) go Walk(t1, ch1) go Walk(t2, ch2) for { v1, ok1 := <-ch1 v2, ok2 := <-ch2 if ok1 != ok2 || v1 != v2 { return false } if !ok1 && !ok2 { break } } return true } func main() { ch := make(chan int) go Walk(tree.New(1), ch) for i := 0; i < 10; i++ { v, ok := <-ch if !ok {break} fmt.Println(v) } fmt.Println(Same(tree.New(1), tree.New(1))) fmt.Println(Same(tree.New(1), tree.New(2))) }
最近のコメント
名前
しゅごい
Jane Doe
FYI Avoid Annoying Unexpe…
Jane Doe
ご存じとは思いますが、whileには、”~の間”と…
peta_okechan
針金みたいなパーツを引っ張ると外れます。 他の方の…
虎徹ファン交換
虎徹の標準ファンを外す際に、どのようにして外されま…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…