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

cyxr001 · 2019-08-21 12:40:54 · 1538 次点击

1楼 @HN-JIE 谢谢大佬 ,有点理解,也有点模糊了。。。

打断点的确只会有一次进。为什么是值传递,他底层虽然是复制了这个指针,但是他指向的应该是同一个东西吧?\m 有点糊涂了。。。。

如果设置的pre 不是 *TreeNode, 而是上一次的值*int,就个输出对的。这个是什么情况,*int也是值传递了吧?不会回溯的时候丢失值嘛?

如果在这上面改,怎么才能让设置的*TreeNode 相当于一个全局变量生效,要用二级指针?go里面怎么写呢?

#3
更多评论

你这个明显有问题,参数 *TreeNode只是传值,你第一次左侧递归到pre = root,将pre赋值为4的时候,由于是传值,递归回溯的时候上层pre还是空值,就是当root回溯到根节点时image.png 第一步这里根本没有改变pre的值,所以第二步这里的判断pre应该是空,不会进入if语句块进行5-4的操作,整个流程中应该只有一次进入这个语句块7-5(不信的话你可以debug在这打个断点,看看有几次进入),所以结果是2

#1
xmge
欲戴王冠 必承其重

有次面试,golang面试。没有问过golang相关的任何问题。

#2