1372. 二叉树中的最长交错路径;1042. 不邻接植花;2385. 感染二叉树需要的总时间

1372. 二叉树中的最长交错路径

核心思想:递归。对于一个子节点,如果它是右子树,那么它往右走等于它父节点左边的长度+1,否则就重新开始,然后维护最大值即可,感觉这里用语言不好描述,借鉴一下别人的图。

1372. 二叉树中的最长交错路径;1042. 不邻接植花;2385. 感染二叉树需要的总时间_第1张图片

1372. 二叉树中的最长交错路径;1042. 不邻接植花;2385. 感染二叉树需要的总时间_第2张图片

1042. 不邻接植花

核心思想:就是枚举每一个花园,然后看与它相连的花园,且将已经选过的花的种类去除,然后从剩下的种类中选择一种即可,然后如何枚举花园,我们可以预先处理好花园的相邻花园。

1372. 二叉树中的最长交错路径;1042. 不邻接植花;2385. 感染二叉树需要的总时间_第3张图片

2385. 感染二叉树需要的总时间

核心思想:BFS。类似于水源扩散,首先我们将扩散点放入q中,然后扩散它的父亲节点,扩散它的儿子节点,每枚举一层temp时间就+1,代表了时间。扩散父节点需要我们需要处理好每个节点的父节点是谁,这里我们用dfs来寻找。然后BFS中有一个小细节就是先在seen中放一个None,避免出现节点不存在的情况。

1372. 二叉树中的最长交错路径;1042. 不邻接植花;2385. 感染二叉树需要的总时间_第4张图片

你可能感兴趣的:(算法,python)