码迷,mamicode.com
首页 > 其他好文 > 详细

餐馆最短距离

时间:2020-02-06 10:59:57      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:后序   左右子树   左右   dfs   OLE   另一个   最短路   子节点   表示   

有个N叉树是个大食堂的地图。节点有的是餐馆,有的不是,在输入里面用boolean表示了。每个父节点到子节点的距离都是一。你作为一个吃货,从根节点出发,要去所有的餐馆尝尝,需要的最短路径是多少。
楼主DFS返回两个量,一个是这个节点为根的树要吃完需要的走多长的路,另一个是一个flag表示这个子树里面有没有餐馆。

这个题有点类似蠡口865,每个node都返回{b, d}
b--本子树是否包含餐馆
d-- 从该点遍历其子树内所有餐馆再回到自身所需要的距离d
做后序遍历,也就是先得到左右子树的返回值left, right
如果该子树包含餐馆,本Node d += (left.d + 2)(如果有餐馆) + (right.d + 2)(如果有餐馆)
b = left.b || right.b || 自身是否是餐馆

餐馆最短距离

标签:后序   左右子树   左右   dfs   OLE   另一个   最短路   子节点   表示   

原文地址:https://www.cnblogs.com/beiyeqingteng/p/12267551.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!