-
Notifications
You must be signed in to change notification settings - Fork 2
/
112.路径总和.html
58 lines (54 loc) · 1.82 KB
/
112.路径总和.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<script>
// 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。
// 叶子节点 是指没有子节点的节点。
var hasPathSum = function (root, targetSum) {
if (!root) return false;
function addP(node, sum) {
if (!node.left && !node.right) return sum === targetSum;
let left = node.left ? addP(node.left, sum + node.left.val) : false;
let right = node.right ? addP(node.right, sum + node.right.val) : false;
return left || right;
}
return addP(root, root.val);
};
var hasPathSum = function (root, targetSum) {
if (!root) return false;
if (!root.right && !root.left) return root.val === targetSum;
return hasPathSum(root.right, targetSum - root.val) || hasPathSum(root.left, targetSum - root.val);
};
// 3
// / \
// 9 20
// / \
// 15 7
let root = {
val: 3,
left: {
val: 9
},
right: {
val: 20,
left: {
val: 15
},
right: {
val: 7
}
}
};
console.log('hasPathSum 12 true = ', hasPathSum(root, 12));
console.log('hasPathSum 13 false = ', hasPathSum(root, 13));
console.log('hasPathSum 29 false = ', hasPathSum(root, 29));
console.log('hasPathSum 30 true = ', hasPathSum(root, 30));
</script>
</body>
</html>