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)))
}
相關文章
- Leetcode Unique Binary Search TreesLeetCode
- Leetcode-Unique Binary Search TreesLeetCode
- Unique Binary Search Trees leetcode javaLeetCodeJava
- Leetcode-Unique Binary Search Trees IILeetCode
- Unique Binary Search Trees II leetcode javaLeetCodeJava
- 【LeetCode】617. Merge Two Binary TreesLeetCode
- LeetCode 617. Merge Two Binary TreesLeetCode
- 【leetcode】 Unique Binary Search Trees II (middle)☆LeetCode
- LeetCode 1305 All Elements in Two Binary Search TreesLeetCode
- 動態規劃專題之---- Unique Binary Search Trees動態規劃
- LeetCode之All Possible Full Binary Trees(Kotlin)LeetCodeKotlin
- EXERCISE
- 【LeetCode從零單排】No96 Unique Binary Search TreesLeetCode
- 96-Unique Binary Search Trees 二叉搜尋樹的數量
- Exercise:JSON解析JSON
- [Javascript] Generator & Iterators exerciseJavaScript
- Equivalent Sets(HDU-3836)UI
- Trees and Segments
- 每日一詞 47 l equivalentUI
- [GO-LANG] Why is my trivial program such a large binary?Go
- Exercise 5: Field data acquisition and analysisUI
- [USACO20OPEN] Exercise P
- 「Python」Numpy equivalent of MATLAB's cell arrayPythonUIMatlab
- Trees and XOR Queries AgainAI
- Codeforces Round #292 D.Drazil and Morning Exercise
- The trees stand together with ability ranks and rune words
- Christmas Trees, Promises和Event EmittersPromiseMIT
- [轉]Trees in SQL: Nested Sets and Materialized PathSQLZed
- [LeetCode] 893. Groups of Special-Equivalent StringsLeetCodeUI
- But how the vigour 300 most effective physical exercise to shedGo
- 《Learn python the hard way》Exercise 48: Advanced User InputPython
- LSM(Log Structured Merge Trees ) 筆記Struct筆記
- oracle plsql(一)_binary_float_binary_doubleOracleSQL
- LeetCode-Minimum Height TreesLeetCode
- Convert string to binary and binary to string in C#C#
- MySQL Binary LogMySql
- SIRF binary protocolProtocol
- Binary Colouring