题解 | #二叉树中和为某一值的路径(一)#
二叉树中和为某一值的路径(一)
https://www.nowcoder.com/practice/508378c0823c423baa723ce448cbfd0c
//利用栈进行dfs深度优先搜索,采用pair嵌套
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
#include <utility>
class Solution {
public:
/**
*
* @param root TreeNode类
* @param sum int整型
* @return bool布尔型
*/
bool hasPathSum(TreeNode* root, int sum) {
// write code here
if (root==NULL) {
return false;
}
stack<pair<TreeNode*, int>> s;
s.push({root,sum-root->val});
while (!s.empty()) {
auto temp=s.top();
s.pop();
if (temp.first->left==NULL&&temp.first->right==NULL&&temp.second==0) {
return true;
}
if (temp.first->left) {
s.push({temp.first->left,temp.second-temp.first->left->val});
}
if (temp.first->right) {
s.push({temp.first->right,temp.second-temp.first->right->val});
}
}
return false;
}
};

查看16道真题和解析