leetcode-112-113-437

leetcode 112题 113题 437题

leetcode 112题题目:

给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。

说明: 叶子节点是指没有子节点的节点。

示例

解答:
1
2
3
4
5
6
7
8
9
var hasPathSum = function(root, sum) {
if(root==null){
return false;
}
if(root.left==null&&root.right==null){
return sum-root.val==0;
}
return hasPathSum(root.left,sum-root.val)||hasPathSum(root.right,sum-root.val);
};

leetcode113题题目:

给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。

说明: 叶子节点是指没有子节点的节点。

示例

解答:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var pathSum = function(root, sum) { 
var result = [];
get(root,0,[],result);

function get(node,currentSum,currentList,result){
if(node==null){
return;
}
currentSum = currentSum + node.val;
currentList.push(node.val);
if(node.left==null&&node.right==null){
if(currentSum==sum){
result.push(JSON.parse(JSON.stringify(currentList)));
//console.log(result);
}
currentList.pop();
return;
}
get(node.left,currentSum,currentList,result);
get(node.right,currentSum,currentList,result);
currentList.pop();
}
return result;
};

leetcode437题题目:

给定一个二叉树,它的每个结点都存放着一个整数值。

找出路径和等于给定数值的路径总数。

路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。

二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。

示例

解答:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var pathSum = function(root, sum) {
var count = 0;
function pathSum1(root,sum){
if(root==null){
return 0;
}
Sum(root,sum);
pathSum1(root.left,sum);
pathSum1(root.right,sum);
}
function Sum(root,sum){
if(root==null){
return;
}
sum = sum - root.val;
if(sum==0){
count++;
}
Sum(root.left,sum);
Sum(root.right,sum);
}
pathSum1(root,sum);
return count;
};
分享到