Entrevista al programador preguntas clásicas doradas de la entrevista 04.12. Ruta de resumen

1. Introducción al tema

Dado un árbol binario, cada nodo contiene un valor entero (el valor es positivo o negativo). Diseñe un algoritmo para imprimir el número de todas las rutas cuya suma de valores de nodo sea igual a un valor dado. Tenga en cuenta que la ruta no necesariamente tiene que comenzar o terminar desde el nodo raíz o el nodo hoja del árbol binario, pero su dirección debe ser hacia abajo (solo desde el nodo padre al nodo hijo).

Ejemplo:
dado el siguiente árbol binario y la suma de la suma objetivo = 22,

              5
             / \
            4 8
           / / \
          11 13 4
         / \ / \
        7 2 5 1
Volver:

3
Explicación: La ruta donde la suma es 22 es: [5,4,11,2], [5,8,4,5], [4,11,7]
Consejos:

Número total de nodos <= 10000

Fuente: LeetCode
Enlace: https://leetcode-cn.com/problems/paths-with-sum-lcci
Copyright es propiedad de LeetCode . Para reimpresiones comerciales, comuníquese con la autorización oficial. Para reimpresiones no comerciales, indique la fuente.

Dos ideas para resolver problemas

       Esta pregunta utiliza DFS de doble capa para buscar y, finalmente, encuentra el número de todas las rutas que cumplen con los requisitos. Consulte el código para obtener más detalles.

Tres, código de resolución de problemas

class Solution {
public:
    int res = 0;
    int pathSum(TreeNode* root, int sum) {
        if(!root)
            return res;
        dfs(root, sum); //计算以根节点为起点时,所得结果
        pathSum(root->left, sum); //计算以左子节点为起点时,所得结果
        pathSum(root->right, sum);//计算以右子节点为起点时,所得结果
        return res;
    }

    void dfs(TreeNode* root, int sum)
    {
        if(!root)
            return;
        int curNum = root->val;
        if(curNum == sum) res++;
        dfs(root->left, sum-curNum);
        dfs(root->right, sum-curNum);
    }
};

Cuatro, resultados de resolución de problemas

Supongo que te gusta

Origin blog.csdn.net/qq_39661206/article/details/108140252
Recomendado
Clasificación