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)
}
相关文章
|
6月前
|
算法 Java Go
【经典算法】LeetCode 100. 相同的树(Java/C/Python3/Go实现含注释说明,Easy)
【经典算法】LeetCode 100. 相同的树(Java/C/Python3/Go实现含注释说明,Easy)
51 0
|
XML 编解码 算法
go语言|数据结构:二叉树可视化(制作svg格式树形图)
go语言|数据结构:二叉树可视化(制作svg格式树形图)
11242 2
|
XML 数据可视化 Go
go语言|数据结构:二叉树可视化(svg树形图改进版)
go语言|数据结构:二叉树可视化(svg树形图改进版)
484 0
|
自然语言处理 Go
Go语言学习编程实践:实现简易计算器(包含词法器、语法树构建)
Go语言学习编程实践:实现简易计算器(包含词法器、语法树构建)
166 0
每日一题 --- 590. N 叉树的后序遍历[力扣][Go]
每日一题 --- 590. N 叉树的后序遍历[力扣][Go]
每日一题 --- 590. N 叉树的后序遍历[力扣][Go]
每日一题 --- 589. N 叉树的前序遍历[力扣][Go]
每日一题 --- 589. N 叉树的前序遍历[力扣][Go]
每日一题 --- 589. N 叉树的前序遍历[力扣][Go]
|
11天前
|
存储 Go 索引
go语言中数组和切片
go语言中数组和切片
23 7
|
11天前
|
Go 开发工具
百炼-千问模型通过openai接口构建assistant 等 go语言
由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
|
11天前
|
程序员 Go
go语言中结构体(Struct)
go语言中结构体(Struct)
87 71