go Exercise: Equivalent Binary Trees
-
Implement the Walk function.
-
Test the Walk function.
The function tree.New(k) constructs a randomly-structured (but always sorted) binary tree holding the values k, 2k, 3k, …, 10k.
Create a new channel ch and kick off the walker:
go Walk(tree.New(1), ch)
Then read and print 10 values from the channel. It should be the numbers 1, 2, 3, …, 10.
-
Implement the Same function using Walk to determine whether t1 and t2 store the same values.
-
Test the Same function.
Same(tree.New(1), tree.New(1)) should return true, and Same(tree.New(1), tree.New(2)) should return false.
The documentation for Tree can be found here.
package main
import (
"golang.org/x/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) {
defer close(ch)
var walk func(t *tree.Tree)
walk = func(t *tree.Tree) {
if t == nil { return }
walk(t.Left)
ch <- t.Value
walk(t.Right)
}
walk(t)
}
// Same determines whether the trees
// t1 and t2 contain the same values.
func Same(t1, t2 *tree.Tree) bool {
ch1, ch2 := make(chan int), make(chan int)
go Walk(t1, ch1)
go Walk(t2, ch2)
for {
v1, ok1 := <-ch1
v2, ok2 := <-ch2
if !ok1 || !ok2 {
return ok1 == ok2
}
if v1 != v2 {
return false
}
}
}
func main() {
fmt.Println(Same(tree.New(1), tree.New(1)))
fmt.Println(Same(tree.New(1), tree.New(2)))
}
相關文章
- 617-Merge Two Binary Trees
- 【LeetCode】617. Merge Two Binary TreesLeetCode
- LeetCode 617. Merge Two Binary TreesLeetCode
- LeetCode之All Possible Full Binary Trees(Kotlin)LeetCodeKotlin
- LeetCode 1305 All Elements in Two Binary Search TreesLeetCode
- 題解:CF1237E Balanced Binary Search Trees
- 96-Unique Binary Search Trees 二叉搜尋樹的數量
- EXERCISE
- Exercise: Numpy
- Trees
- Exercise:JSON解析JSON
- Computer Vision Exercise
- Traversal of trees
- Trees and Segments
- [GO-LANG] Why is my trivial program such a large binary?Go
- Equivalent Sets(HDU-3836)UI
- day1-exercise
- [Javascript] Generator & Iterators exerciseJavaScript
- 每日一詞 47 l equivalentUI
- exercise003_商品折扣
- Trees and XOR Queries AgainAI
- 「Python」Numpy equivalent of MATLAB's cell arrayPythonUIMatlab
- Exercise 5: Field data acquisition and analysisUI
- [USACO20OPEN] Exercise P
- [LeetCode] 893. Groups of Special-Equivalent StringsLeetCodeUI
- exercise002_判斷閏年
- exercise001_條件判斷
- 6570USST Ladder Based State Design Exercise
- Binary Colouring
- LeetCode之Leaf-Similar Trees(Kotlin)LeetCodeMILAKotlin
- The trees stand together with ability ranks and rune words
- 默克爾樹 Merkle trees(一)
- LSM(Log Structured Merge Trees ) 筆記Struct筆記
- Traversals of binary tree
- MySQL Binary LogMySql
- [20181220]Bushy Join Trees in Oracle 12.2.txtOracle
- Leetcode 67 Add BinaryLeetCode
- B. Quasi Binary