登录
首页 >  Golang >  Go问答

先序二叉树遍历失败

来源:stackoverflow

时间:2024-04-05 17:03:35 340浏览 收藏

从现在开始,我们要努力学习啦!今天我给大家带来《先序二叉树遍历失败》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文过程中有遇到不清楚的地方,欢迎留言呀!我们一起讨论,一起学习!

问题内容

我在 go tour 中进行等效的二叉树练习时遇到了麻烦。

我编写了一个 walker() 函数来按节点左右顺序遍历树,然后使用 same() 函数来测试两个相同的二叉树是否相等。

这是我的代码的链接:https://go.dev/play/p/vakngx_cd3l

请参阅链接的 go 代码中的注释。由于某种原因,按照这种遍历顺序,等价性测试在应该起作用时却失败了。不过,将顺序切换为左节点右或右节点左是可行的。

打印输出也让我困惑。这是运行时的结果。为什么遍历树 1 的前 10 个数字与遍历树 2 的第二组 10 个数字不匹配?

10
5
3
1
2
4
7
6
9
8
7
4
2
1
3
5
6
9
8
10
false
false

正确答案


我认为这里的问题是,您正在使用 https://pkg.go.dev/golang.org/x/tour/tree#New 函数,该函数返回从 1k 到 10k 值的随机二叉树。

“随机”一词在这里很重要,因此您不能期望获得与调用 tree.New(1) 函数的输出相同的二叉树。

虽然树节点的值从 1 到 10(k=1 的情况),但返回的树的顺序将不同。如果使用 .String() 函数打印树,您可以清楚地看到这一点。 看一下下面的演示代码,其中我打印了树,它清楚地表明每次调用 tree.New 函数时返回的树都会不同。 https://go.dev/play/p/WkF8frfno17

我希望这有帮助:)。

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>