正常写法
bool HasPathSum(TreeNode root, int sum) {
bool ret=false;
if(root==null)return false;
if(root.left==null&&root.right==null) return root.val==sum;
if(root.left!=null)
{
ret=ret|| HasPathSum(root.left,sum-root.val);
}
if(root.right!=null)
{
ret=ret|| HasPathSum(root.right,sum-root.val);
}
return ret;
}
破坏性写法
bool HasPathSum(TreeNode root, int sum) {
bool ret=false;
if(root==null)return false;
if(root.left==null&&root.right==null) return root.val==sum;
if(root.left!=null)
{
root.left.val+=root.val;
ret=ret|| HasPathSum(root.left,sum);
}
if(root.right!=null)
{
root.right.val+=root.val;
ret=ret|| HasPathSum(root.right,sum);
}
return ret;
}
在leetcode中第二种方法速度快,但是破坏了原树的值
原文:http://www.cnblogs.com/darksied/p/4729148.html