剑指offer之二叉树中和为某一值的路径
Posted 我是畅游海
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer之二叉树中和为某一值的路径相关的知识,希望对你有一定的参考价值。
题目:
二叉树中和为某一值的路径
链接:
https://www.nowcoder.com/practice/b736e784e3e34731af99065031301bca?tpId=13&tqId=11177&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
题目描述:
输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
思路:
进行扫描,扫描到叶子节点后,看是否符合和为目标值的要求,如符合加入结果中,如不符合继续扫描。
代码:
1 /* 2 struct TreeNode { 3 int val; 4 struct TreeNode *left; 5 struct TreeNode *right; 6 TreeNode(int x) : 7 val(x), left(NULL), right(NULL) { 8 } 9 };*/ 10 class Solution{ 11 public: 12 vector<vector<int>> FindPath (TreeNode *root,int expectNumber){ 13 if(root == nullptr || expectNumber < 0) 14 return res; 15 sumpath(root,expectNumber); 16 return res; 17 } 18 void sumpath(TreeNode *root ,int expectNumber){ 19 if(root ==nullptr) 20 return ; 21 path.push_back(root->val); 22 expectNumber -= root->val; 23 if(root->left == nullptr && root ->right == nullptr && expectNumber == 0){ 24 res.push_back(path); 25 } 26 sumpath(root->left,expectNumber); 27 sumpath(root->right,expectNumber); 28 path.pop_back(); 29 } 30 private: 31 vector<vector<int>> res; 32 vector<int> path; 33 };
以上是关于剑指offer之二叉树中和为某一值的路径的主要内容,如果未能解决你的问题,请参考以下文章