java二叉树递归,leetcode814

题目

img


这一种代码运行结果的输出结果和输入结果一致,没有变化

img


但这一段代码运行成功

img


个人认为两种代码逻辑一致,请问为什么结果不同。

第一种写法没有改动到树,因为参数是对象时是引用传递,也就是说node变量指向节点,所以node.left = null可以将指向节点的left属性置为空,但是node=null是使node不指向任何对象,并不会改动到节点

我去看了一遍原题,其实思路没啥问题,主要是
node.left = judge(node.left);
这行代码有可能改变当前node的左节点,这样返回的node是左节点已经变化的node
而boolean left = judge(node.left);这行代码不会改变node左节点属性
无论怎么操作,返回的依然是原节点