Java aplicación LeetCode 687 con un valor máximo de la trayectoria (recursivo)

687. El valor de la ruta con el más largo

Dado un árbol binario, para encontrar los caminos más largos, cada nodo en esta ruta tiene el mismo valor. Este camino puede o no puede pasar a través del nodo raíz.

Nota: la longitud de la trayectoria entre dos nodos está representado por el número de bordes entre los mismos.

Ejemplo 1:

entrada:

   5
     / \
    4   5
   / \   \
  1   1   5

salida:

2
Ejemplo 2:

entrada:

    1
     / \
    4   5
   / \   \
  4   4   5

salida:

2
Nota: el árbol binario dado no más de 10.000 nodos. Altura del árbol no exceda de 1000.

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    private int maxL = 0;
    
    public int longestUnivaluePath(TreeNode root) {
       
        if(root == null) return 0;
        getMaxL(root, root.val);
        return maxL;
    }
    
    private int getMaxL(TreeNode r, int val) {
        if(r == null) return 0;
        int left = getMaxL(r.left, r.val);
        int right = getMaxL(r.right, r.val);
        maxL = Math.max(maxL, left+right); // 路径长度为节点数减1所以此处不加1
        if(r.val == val) // 和父节点值相同才返回以当前节点所能构成的最长通知路径长度, 否则返回0
            return Math.max(left, right) + 1;
        return 0;
    }
}
Liberadas 1738 artículos originales · ganado elogios 30000 + · vistas 3,66 millones +

Supongo que te gusta

Origin blog.csdn.net/a1439775520/article/details/105328987
Recomendado
Clasificación