地址 https://www.acwing.com/problem/content/description/45/node
輸入一棵二叉樹和一個整數,打印出二叉樹中結點值的和爲輸入整數的全部路徑。spa
從樹的根結點開始往下一直到葉結點所通過的結點造成一條路徑。code
給出二叉樹以下所示,並給出num=22。 5 / \ 4 6 / / \ 12 13 6 / \ / \ 9 1 5 1 輸出:[[5,4,12,1],[5,6,6,5]]
樹的處理 一半是遞歸blog
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<vector<int>> ret; void findPathInner(TreeNode* root, int sum, vector<int> v) { sum -= root->val; v.push_back(root->val); if (sum == 0 && root->left == NULL && root->right == NULL) { ret.push_back(v); return; } if(sum <0 ) return; if (root->left != NULL) { findPathInner(root->left, sum, v); } if (root->right != NULL) { findPathInner(root->right, sum, v); } } vector<vector<int>> findPath(TreeNode* root, int sum) { if (root == NULL) return ret; if (sum == 0) return ret; vector<int> v; sum -= root->val; v.push_back(root->val); if (sum < 0) return ret; if (sum == 0) { ret.push_back(v); return ret; } if (root->left != NULL) { findPathInner(root->left, sum, v); } if (root->right != NULL) { findPathInner(root->right, sum, v); } return ret; } };