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)
}
相关文章
|
5月前
|
算法 Java Go
【经典算法】LeetCode 100. 相同的树(Java/C/Python3/Go实现含注释说明,Easy)
【经典算法】LeetCode 100. 相同的树(Java/C/Python3/Go实现含注释说明,Easy)
36 0
|
XML 编解码 算法
go语言|数据结构:二叉树可视化(制作svg格式树形图)
go语言|数据结构:二叉树可视化(制作svg格式树形图)
11233 2
|
XML 数据可视化 Go
go语言|数据结构:二叉树可视化(svg树形图改进版)
go语言|数据结构:二叉树可视化(svg树形图改进版)
479 0
|
自然语言处理 Go
Go语言学习编程实践:实现简易计算器(包含词法器、语法树构建)
Go语言学习编程实践:实现简易计算器(包含词法器、语法树构建)
160 0
每日一题 --- 590. N 叉树的后序遍历[力扣][Go]
每日一题 --- 590. N 叉树的后序遍历[力扣][Go]
每日一题 --- 590. N 叉树的后序遍历[力扣][Go]
每日一题 --- 589. N 叉树的前序遍历[力扣][Go]
每日一题 --- 589. N 叉树的前序遍历[力扣][Go]
每日一题 --- 589. N 叉树的前序遍历[力扣][Go]
|
5天前
|
存储 JSON 监控
Viper,一个Go语言配置管理神器!
Viper 是一个功能强大的 Go 语言配置管理库,支持从多种来源读取配置,包括文件、环境变量、远程配置中心等。本文详细介绍了 Viper 的核心特性和使用方法,包括从本地 YAML 文件和 Consul 远程配置中心读取配置的示例。Viper 的多来源配置、动态配置和轻松集成特性使其成为管理复杂应用配置的理想选择。
23 2
|
3天前
|
Go 索引
go语言中的循环语句
【11月更文挑战第4天】
11 2
|
3天前
|
Go C++
go语言中的条件语句
【11月更文挑战第4天】
14 2