题目描述
输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。
从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
样例
Input: num = 22
5
/ \
4 6
/ / \
12 13 6
/ \ / \
9 1 5 1
Output:[[5,4,12,1],[5,6,6,5]]
解题思路
-
描述
递归遍历到叶子结点,判断处理即可。
-
实现代码:
vector<vector<int>> findPath(TreeNode* root, int sum) { bfs(root,sum); return res; } void bfs(TreeNode* root, int sum) { if(!root) // 为空,则直接返回 { return ; } sum -= root->val; // 减去当前节点值,并加入路径数组中 cres.push_back(root->val); if((!root->left) && (!root->right) && !sum) // 为叶子结点且num为零 { res.push_back(cres); } bfs(root->left,sum); // 递归遍历左右子树 bfs(root->right,sum); cres.pop_back(); // 恢复现场 }