巡回练习:等效二叉树

巡回练习:等效二叉树,第1张

巡回练习:等效二叉树

如果Walk函数本身不递归,则可以使用close()。即步行将做:

func Walk(t *tree.Tree, ch chan int) {    walkRecurse(t, ch)    close(ch)}

其中walkRecurse或多或少是您当前的Walk功能,但是在walkRecurse上递归。(或者您将Walk重写为迭代式的-
理所当然,这更加令人生厌)使用这种方法,您的Same()函数必须了解Channels已关闭,这是通过表单的channel接收完成的

k, ok1 := <-chg, ok2 := <-ch

ok1
ok2
彼此不同时,或者当两者都不同时,采取适当的措施
false

另一种方法(但可能不是本练习的精神)是计算树中的节点数:

func Same(t1, t2 *tree.Tree) bool {    countT1 := countTreeNodes(t1)    countT2 := countTreeNodes(t2)    if countT1 != countT2 {        return false    }    ch1 := make(chan int)    ch2 := make(chan int)    go Walk(t1, ch1)    go Walk(t2, ch2)    for i := 0; i < countT1; i++ {        if <-ch1 != <-ch2 { return false        }    }    return true}

您必须实现countTreeNodes()函数,该函数应该计算* Tree中的节点数



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5163408.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-18
下一篇 2022-11-18

发表评论

登录后才能评论

评论列表(0条)

保存