golang https://tour.go-zh.org/methods/12
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang https://tour.go-zh.org/methods/12相关的知识,希望对你有一定的参考价值。
go实现等价二叉查找树
地址:https://tour.go-zh.org/concurrency/7
code:
package main
import (
"golang.org/x/tour/tree"
"fmt"
//"strconv"
)
// Walk 步进 tree t 将所有的值从 tree 发送到 channel ch。
func Walk(t *tree.Tree, ch chan int) {
if t == nil {
return
}
if t.Left != nil {
Walk(t.Left, ch)
}
//fmt.Println(t.Value)
ch <- t.Value
if t.Right != nil {
Walk(t.Right, ch)
}
return
}
// Same 检测树 t1 和 t2 是否含有相同的值。
func Same(t1, t2 *tree.Tree) bool {
ch0 := make(chan int, 15)
ch1 := make(chan int, 15)
Walk(t1, ch0)
close(ch0)
Walk(t2, ch1)
close(ch1)
l0 := len(ch0)
l1 := len(ch1)
if l0 != l1 {
return false;
}
for i := 0; i < l0; i++ {
if <-ch0 != <-ch1 {
return false
}
//fmt.Println("ch0:" + strconv.Itoa(<-ch0))
}
//for i := 0; i < l1; i++ {
// fmt.Println("ch1:" + strconv.Itoa(<-ch1))
//}
return true
}
func main() {
tree0 := tree.New(2)
tree1 := tree.New(2)
ret := Same(tree0, tree1)
fmt.Println(ret)
}
以上是关于golang https://tour.go-zh.org/methods/12的主要内容,如果未能解决你的问题,请参考以下文章
golang https://tour.go-zh.org/moretypes/20