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