餐馆最短距离
有个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 || 自身是否是餐馆