查看: 2679| 回复: 28
跳转到指定楼层
上一主题 下一主题
收起左侧

[树/链表/图] 求问:[]与null有何区别?

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
求问:output为[]与null有何区别?在144. Binary Tree Preorder Traversal这道题目中,我的base case return null,没有通过[]的test case,请问是哪里不对的吗?
以及:答案是return output,我是第一次见到return output这个操作,有点迷茫,想请教下地里大神,return output是不是相当于说了一句废话呢?还是有更深奥的含义?谢谢




补充内容 (2020-9-1 12:16):
“说了一句废话”有歧义,不是不尊重哦,我的困惑在于由于list有它自己的space O(n),相当于放在一边不断填入数据,所以不被return也在那边对吗?到达base case时return output是否有必要呢?

补充内容 (2020-9-1 12:18):
如果不是由于base case的缘故而去return output,那是不是就是为了deal with case "input []"

评分

参与人数 2大米 +2 收起 理由
Ccqw12 + 1 赞一个
14417335 + 1

查看全部评分


上一篇:九月刷题给米接龙活动(小伙伴们冲冲冲)
下一篇:推荐B站和YouTube上的学习资源
全局:
一个是钱包里面没钱;一个连钱包也没有

评分

参与人数 4大米 +4 收起 理由
TracyInSummer + 1 赞一个
ljh1187684006 + 1 赞一个
insignificance + 1 给你点个赞!
Ccqw12 + 1 赞一个

查看全部评分

回复

使用道具 举报

推荐
韦小崽 2020-9-2 01:33:47 | 只看该作者
全局:
本帖最后由 韦小崽 于 2020-9-2 01:41 编辑

楼主我这么跟你说吧,这个题就是,你给我一棵桃树,叫我把树上的桃子摘下来按先后顺序放在一个框里给你。
如果树上没桃儿,那return []也就是我给你一个空框子,那你大概也知道这意思就是树上没桃儿。
return null就是,我啥都不给你,或者是我直接玩失踪……

另外return null这种操作在实操中最好尽量避免。除非你确定调用函数的代码会处理null,否则出了问题没人负责啊……一般情况下都是直接抛异常

评分

参与人数 2大米 +2 收起 理由
TracyInSummer + 1 赞一个
Ccqw12 + 1 赞一个

查看全部评分

回复

使用道具 举报

全局:
你看上面treenode 构造函数,空 和 null的本质区别就是前者已经有对象而后者没有,只不过空没有给里面的attribute赋值而已

补充内容 (2020-9-2 00:41):
如果是转码的建议多看看基础知识,不然面试侥幸过了以后工作上也捉襟见肘
回复

使用道具 举报

全局:
null类似于空指针,就是这个对象没有创建。【】的意思就是已经创建了对象,但是对象里面是空的。
回复

使用道具 举报

🔗
 楼主| liuzz10 2020-9-2 01:08:06 | 只看该作者
全局:
本帖最后由 liuzz10 于 2020-9-1 09:09 编辑
不知道小帅 发表于 2020-9-1 08:55
null类似于空指针,就是这个对象没有创建。【】的意思就是已经创建了对象,但是对象里面是空的。

谢谢大神!所以return output的时候,才会return一个空的linked list对吗?
刚刚从linked list换到tree,还没切换过来思维模式。。。因为 linked list base case都是return null,现在看到return就想到null😆和tree对比一下我才知道,空的linked lis是null,所以return null没问题。但是空的tree可不是null,所以不能直接return null
回复

使用道具 举报

全局:
liuzz10 发表于 2020-9-2 01:08
谢谢大神!所以return output的时候,才会return一个空的linked list对吗?
刚刚从linked list换到tree ...

返回output的话才会返回空。Tree的base case其实大部分情况下也是返回null。但是这里的返回类型是List,返回null的话会增加调用你这个函数的那个地方的工作量。这里其实空的list就够了。空的list实现的时候其实内部的head节点也是null。还是之前 说过的啊,list其实是封装过的List Node
回复

使用道具 举报

全局:
output在这里是一个已经创建好的empty list,在后续操作中这个list可能会被写入数据(也可能不会,比如图中的case),return output就是返回这个list,能说说你为什么觉得这是一句废话吗?不是很确定你不清楚的点在哪里,所以不知道有没有解答到你的疑问
回复

使用道具 举报

🔗
jzhao59 2020-9-2 01:36:02 | 只看该作者
全局:
非Java选手,想确认一下,这个代码应该本身没问题吧,只不过返回的值不符合要求而已?
回复

使用道具 举报

🔗
韦小崽 2020-9-2 01:49:07 | 只看该作者
全局:
本帖最后由 韦小崽 于 2020-9-2 01:53 编辑
liuzz10 发表于 2020-9-2 01:08
谢谢大神!所以return output的时候,才会return一个空的linked list对吗?
刚刚从linked list换到tree ...

LinkedList和Tree的思维模式是一样的,我觉得楼主你是不太了解ArrayList。

主要是LinkedList这名字对于新手来讲确实有点confusing...LinkedList说白了就是个只有一个子节点的Tree,所以每次返回LinkedList的时候,返回的根本就不是一个List,而是一个单独的节点(但是你顺着这个节点可以把一个list的所有内容摸出来)。空节点用null代替是个比较常规的操作,所以做LinkedList的题目时返回null也很正常。

ArrayList就不一样了……它是一个真正的list,跟你家陈列柜一样,你放不放东西它都占着那个空间,而且是固定的空间。但是这个空间里你可以选择啥都不放,而且你放的东西互相可以完全没关系,不用像LinkedList一样搞根绳儿栓一块儿😂

补充内容 (2020-9-2 03:48):
啊我发现我看错了……原来这题只是要返回list,和arraylist没关系😂我只能说list和linkedlist里面的某一个节点确实是两个概念

评分

参与人数 1大米 +1 收起 理由
Ccqw12 + 1 赞一个

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表