tema:
Dado un árbol binario y una suma de objetivos, encuentre todas las rutas cuya suma de rutas desde el nodo raíz al nodo hoja sea igual a la suma de objetivos dada.
Explicación: Un nodo hoja se refiere a un nodo sin nodos secundarios.
solución
Recursividad
Retroceda recursivamente, registre el valor de count, cuando count == 0, encuentre la ruta, push_back
define una ruta de matriz adicional para la matriz res, que se registra como la ruta,
Código
class Solution {
private:
vector<vector<int>> res;
vector<int> path;
void traversal(TreeNode* node, int count) {
if(node->left == NULL && node->right == NULL && count == 0) {
res.push_back(path);
return;
}
if(!node->left && !node->right) {
return;
}
if (node->left) {
path.push_back(node->left->val);
count -= node->left->val;
traversal(node->left, count);
path.pop_back();
count += node->left->val;
}
if (node->right) {
path.push_back(node->right->val);
count -= node->right->val;
traversal(node->right, count);
path.pop_back();
count += node->right->val;
}
return;
}
public:
vector<vector<int>> pathSum(TreeNode* root, int targetSum) {
res.clear();
path.clear();
if (!root) return res;
path.push_back(root->val);
traversal(root, targetSum - root->val);
return res;
}
};