📣 独立日限时特惠: VIP通行证立减$68
查看: 1760| 回复: 8
跳转到指定楼层
上一主题 下一主题
收起左侧

[CareerCup] 问一下CC150里面的DFS代码

🔗
MTC | 只看该作者 |倒序浏览
全局:

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

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

x
  1. public static void DFS(Node root){

  2. if(root==null) return;//不是递归的终止条件吧,是检查root是否为空的吧?
  3. visit(root);
  4. root.visited=true;
  5. for(Node n:root.adjacent){
  6. if(n.visited==false){

  7. search(n);
  8. }


  9. }


  10. }
复制代码
if(root==null) return;
不是递归的终止条件吧,是检查root是否为空的吧?递归的终止条件应该是root.visited==true吧,图怎么可能会有节点的adjcent为空的情况呢?

上一篇:Intersection of Two Linked Lists分享一种和答案不同的简单解法
下一篇:大家说CC150刷题指的是什么?
🔗
 楼主| MTC 2014-11-30 10:20:39 | 只看该作者
全局:
kinslayer 发表于 2014-11-29 23:35
root.visited==true就不进递归了啊 它这是全部for都执行完一遍就结束了

第三行可以删掉吗?
回复

使用道具 举报

🔗
1guangnian 2014-12-2 11:18:48 | 只看该作者
全局:
当你第一次调用dfs的时候,那个root可能为空
回复

使用道具 举报

🔗
 楼主| MTC 2014-12-2 12:09:04 | 只看该作者
全局:
1guangnian 发表于 2014-12-2 11:18
当你第一次调用dfs的时候,那个root可能为空

对啊,就是增加程序的健壮性的不?不是递归终止返回上一层的条件
回复

使用道具 举报

🔗
1guangnian 2014-12-2 15:37:29 | 只看该作者
全局:
MTC 发表于 2014-12-2 12:09
对啊,就是增加程序的健壮性的不?不是递归终止返回上一层的条件

如果node.adjacent里面不包含null节点,第三行确实意义不大,可以在调用dfs之前就判断
回复

使用道具 举报

🔗
Freetymekiyan 2014-12-3 00:10:18 | 只看该作者
全局:
本来这是recursive的写法,结果把函数名search改成DFS了,破坏了原有的结构
if (root == null) return; 避免访问空节点
root.visited = true只是一个flag,标记一下已经访问过的节点,避免重复访问
回复

使用道具 举报

🔗
 楼主| MTC 2014-12-3 10:33:01 | 只看该作者
全局:
Freetymekiyan 发表于 2014-12-3 00:10
本来这是recursive的写法,结果把函数名search改成DFS了,破坏了原有的结构
if (root == null) return; 避 ...

不好意思,函數名笔误了。。。不过图会有adjecent为空的情况吗?不可能啊,除非他是孤立的,否则递归根本不能结束
回复

使用道具 举报

🔗
Freetymekiyan 2014-12-3 11:51:03 | 只看该作者
全局:
MTC 发表于 2014-12-2 21:33
不好意思,函數名笔误了。。。不过图会有adjecent为空的情况吗?不可能啊,除非他是孤立的,否则递归根本 ...

是的 每个节点都访问到了就结束了
回复

使用道具 举报

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

本版积分规则

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