正常写法
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中第二种方法速度快,但是破坏了原树的值
时间: 2024-10-08 10:49:12