Leetcode113路径总和2
生活随笔
收集整理的這篇文章主要介紹了
Leetcode113路径总和2
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目
給定一個(gè)二叉樹和一個(gè)目標(biāo)和,找到所有從根節(jié)點(diǎn)到葉子節(jié)點(diǎn)路徑總和等于給定目標(biāo)和的路徑。
說(shuō)明: 葉子節(jié)點(diǎn)是指沒(méi)有子節(jié)點(diǎn)的節(jié)點(diǎn)。
示例:
給定如下二叉樹,以及目標(biāo)和 sum = 22,
返回:
[[5,4,11,2],[5,8,4,5] ]思路
前序遍歷(深度搜索)二叉樹,遍歷到葉節(jié)點(diǎn)保存為一條路徑,同時(shí)保存遍歷的值之和。
前序遍歷使用的是遞歸實(shí)現(xiàn)。
vector<vector> result用來(lái)存儲(chǔ)滿足條件路徑的數(shù)組
路徑結(jié)果保存的條件是:節(jié)點(diǎn)為葉節(jié)點(diǎn),同時(shí)路徑和path_value等于sum
代碼
/*** 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>> pathSum(TreeNode* root, int sum) {vector<vector<int>> result;//存儲(chǔ)滿足條件路徑的數(shù)組vector<int> path;//路徑存儲(chǔ)int path_value=0;//路徑的值pre_order(root,path_value,sum,path,result);return result;//返回result}private:void pre_order(TreeNode *node, int &path_value,int sum,std::vector<int> &path,std::vector<std::vector<int>> &result){if(!node)//節(jié)點(diǎn)為空return;//遍歷一個(gè)節(jié)點(diǎn)更新一次路徑path_value+=node->val;//值path.push_back(node->val);//路徑保存if(!node->left&&!node->right&&path_value==sum)result.push_back(path);//路徑添加到結(jié)果數(shù)組pre_order(node->left,path_value,sum,path,result);pre_order(node->right,path_value,sum,path,result);path_value-=node->val;path.pop_back();//遍歷完成,該結(jié)點(diǎn)從路徑中彈出 } };題目來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/path-sum-ii點(diǎn)擊訪問(wèn)原題目
總結(jié)
以上是生活随笔為你收集整理的Leetcode113路径总和2的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 水题Kattis Temperature
- 下一篇: 你理解快速幂吗?