话不多说,直接上代码:
class solution {
private:
bool res = false;
public:
bool haspathsum(treenode *root, int sum)
{
if(!root)
{
return false;
}
preorder(root,sum);
return res;
}
void preorder(treenode *root,int sum)
{
if(!root)
{
return;
}
sum -= root -> val;
if(sum == 0 && !root -> left && !root -> right)
{
res = true;
}
preorder(root -> left, sum);
preorder(root -> right, sum);
}
};
原理很简单,采用递归方法,从左到右遍历每条路径,查找到最终值便结束遍历。返回true