- 首先想到的是遍历,可以把每一条路都走一遍,但好像有点复杂
- 利用递归和分治,如果它的左子树和右子树可以输出找到除root.val的一条路,那就返回真,否则返回假。
/*
* function TreeNode(x) {
* this.val = x;
* this.left = null;
* this.right = null;
* }
*/
/**
*
* @param root TreeNode类
* @param sum int整型
* @return bool布尔型
*/
function hasPathSum( root , sum ) {
// write code here
if (!root) {
return false;
}
if (root.val == sum && root.left == null && root.right == null) {
return true;
}
if (hasPathSum(root.left, sum-root.val) || hasPathSum(root.right, sum-root.val)) {
return true;
} else {
return false;
}
}
module.exports = {
hasPathSum : hasPathSum
};