用golang刷leetcode 530题,出现一个问题。求大神们看看

cyxr001 · · 1411 次点击
xmge
欲戴王冠 必承其重
有次面试,golang面试。没有问过golang相关的任何问题。
#2
更多评论
你这个明显有问题,参数 *TreeNode只是传值,你第一次左侧递归到pre = root,将pre赋值为4的时候,由于是传值,递归回溯的时候上层pre还是空值,就是当root回溯到根节点时![image.png](https://static.studygolang.com/190822/b49a850cd913b6381e270efbb8e7842b.png) 第一步这里根本没有改变pre的值,所以第二步这里的判断pre应该是空,不会进入if语句块进行5-4的操作,整个流程中应该只有一次进入这个语句块7-5(不信的话你可以debug在这打个断点,看看有几次进入),所以结果是2
#1
1楼 <a href="/user/HN-JIE" title="@HN-JIE">@HN-JIE</a> 谢谢大佬 ,有点理解,也有点模糊了。。。 打断点的确只会有一次进。为什么是值传递,他底层虽然是复制了这个指针,但是他指向的应该是同一个东西吧?\m 有点糊涂了。。。。 如果设置的pre 不是 \*TreeNode, 而是上一次的值\*int,就个输出对的。这个是什么情况,\*int也是值传递了吧?不会回溯的时候丢失值嘛? 如果在这上面改,怎么才能让设置的*TreeNode 相当于一个全局变量生效,要用二级指针?go里面怎么写呢?
#3