leetcode ruta suma II

árbol binario? Y el camino!

Título
Dado un árbol binario y un objetivo y encontrar todos los caminos desde el nodo raíz hasta el nodo hoja es igual a la suma de la ruta y el destino dado.
Descripción: nodo hoja es un nodo no tiene nodos secundarios.

Ejemplos
Ejemplo:
Dado el siguiente árbol binario, y el objetivo y la suma = 22,

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

Devuelve:
[
[5,4,11,2],
[5,8,4,5]
]

tema de análisis

  • Objetivo: encontrar todas las rutas a partir de la raíz al nodo hoja ⇒ su unión es igual al valor objetivo
  1. Encontrar el camino de la raíz a nodo hoja ⇒ solución recursiva
  2. Si el nodo es igual a la suma del valor objetivo ruta ⇒ Agregar

Ideas de resolución de problemas

variable efecto
encontrar() La búsqueda de la función de trayectoria

proceso

  1. ⇒ Añadir nodo actual para actualizar la ruta del nodo y
  2. Analizando el nodo es igual a la suma del valor de destino y el nodo actual es un nodo hoja si la condición se cumple ⇒ agregar la ruta a la respuesta
  3. Si el subárbol izquierdo no está vacía ⇒ actualización de la izquierda nodo hijo al nodo actual, repita 2,3,4
  4. Si el subárbol derecho no está vacía ⇒ de actualización adecuados nodos hijos del nodo actual, repita el 2,3,4

Código es el siguiente

void find(TreeNode*root, int add, int sum, vector<int> path, vector<vector<int>> &ans)
 {
     add += root->val;                             //更新结点和
     path.push_back(root->val);                    //当前结点加入路径
     if(add == sum&&!root->left&&!root->right) ans.push_back(path);  
        if(root->left) find(root->left,add,sum,path,ans);
        if(root->right) find(root->right,add,sum,path,ans);
 } 
class Solution {
public:
    vector<vector<int>> pathSum(TreeNode* root, int sum) {
        if(!root) return{};
        vector<vector<int>> ans;
        vector<int> path;
        int add =0;
        find(root, add, sum, path, ans);
        return ans;
    }
};
Publicado 34 artículos originales · ganado elogios 0 · Vistas 576

Supongo que te gusta

Origin blog.csdn.net/Luyoom/article/details/104860955
Recomendado
Clasificación