日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Leetcode113路径总和2

發布時間:2025/4/5 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Leetcode113路径总和2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

給定一個二叉樹和一個目標和,找到所有從根節點到葉子節點路徑總和等于給定目標和的路徑
說明: 葉子節點是指沒有子節點的節點。
示例:
給定如下二叉樹,以及目標和 sum = 22,

5/ \4 8/ / \11 13 4/ \ / \7 2 5 1

返回:

[[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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。