go 判断两棵树内容是否一致

简介: go 判断两棵树内容是否一致

goroutine

http://127.0.0.1:3999/concurrency/8

question

使用 go 判断 两个 树 存放的 序列 是否 相同, 如果 相同 他们 被称为 equivalent_tree

tree struct

type Tree struct {
    Left  *Tree
    Value int
    Right *Tree
}

由于 递归的 写法 比较简单, 此处 使用循环的 形式 来实现.

因为 循环的 写法 不存在 调用栈的 瓶颈, 所以 在实际工程中, 能够 避免 递归 还是 避免递归吧.

judge tree

package main
import "golang.org/x/tour/tree"
import "fmt"
// Walk walks the tree t sending all values
// from the tree to the channel ch.
func Walk(t *tree.Tree, ch chan int) {
  _ts := make(chan *tree.Tree, 100)
  _ts <- t
OuterLoop:
  for {
    _f1 := func(_tmp *tree.Tree) {
      fmt.Println(_tmp.Value)
      ch <- _tmp.Value
      for _, v := range []*tree.Tree{_tmp.Left, _tmp.Right} {
        if v != nil {
          _ts <- v
        }
      }
    }
    select {
    case _tmp := <-_ts:
      _f1(_tmp)
    default:
      fmt.Println("break")
      break OuterLoop
    }
  }
}
// Same determines whether the trees
// t1 and t2 contain the same values.
func Same(t1, t2 *tree.Tree) bool {
  return true
}
func main() {
  _t1 := tree.New(1)
  _c1 := make(chan int, 100)
  Walk(_t1, _c1)
  _t2 := tree.New(1)
  _c2 := make(chan int, 100)
  Walk(_t2, _c2)
  fmt.Println(_c)
}
相关文章
|
1月前
|
算法 Java Go
【经典算法】LeetCode 100. 相同的树(Java/C/Python3/Go实现含注释说明,Easy)
【经典算法】LeetCode 100. 相同的树(Java/C/Python3/Go实现含注释说明,Easy)
9 0
|
XML 编解码 算法
go语言|数据结构:二叉树可视化(制作svg格式树形图)
go语言|数据结构:二叉树可视化(制作svg格式树形图)
11174 2
|
XML 数据可视化 Go
go语言|数据结构:二叉树可视化(svg树形图改进版)
go语言|数据结构:二叉树可视化(svg树形图改进版)
454 0
|
自然语言处理 Go
Go语言学习编程实践:实现简易计算器(包含词法器、语法树构建)
Go语言学习编程实践:实现简易计算器(包含词法器、语法树构建)
136 0
每日一题 --- 590. N 叉树的后序遍历[力扣][Go]
每日一题 --- 590. N 叉树的后序遍历[力扣][Go]
每日一题 --- 590. N 叉树的后序遍历[力扣][Go]
每日一题 --- 589. N 叉树的前序遍历[力扣][Go]
每日一题 --- 589. N 叉树的前序遍历[力扣][Go]
每日一题 --- 589. N 叉树的前序遍历[力扣][Go]
|
12天前
|
Go
go语言map、实现set
go语言map、实现set
14 0
|
12天前
|
Go
go语言数组与切片
go语言数组与切片
17 0
|
5天前
|
存储 Go API
一个go语言编码的例子
【7月更文挑战第2天】本文介绍Go语言使用Unicode字符集和UTF-8编码。Go中,`unicode/utf8`包处理编码转换,如`EncodeRune`和`DecodeRune`。`golang.org/x/text`库支持更多编码转换,如GBK到UTF-8。编码规则覆盖7位至21位的不同长度码点。
70 1
一个go语言编码的例子