关注我们获取更多计算机考研信息
? 今日习题
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。
说明: 叶子节点是指没有子节点的节点。
示例:
给定如下二叉树,以及目标和 sum = 22,
5
/ \
4 8
/ / \
11 13 4
/ \ \
7 2 1
……⏰ 思考时间……
如果你想好答案了
请查看解题思路和代码实现
▼
·解题思路·
深度优先遍历二叉树,每深入一次,sum-根节点的值,当到达叶子节点的时候,判断sum是否等于当前的节点值,如果等于,说明找到了,否则尝试另外一条路径。
·代码实现·
class Solution {
boolean ans = false;
public boolean hasPathSum(TreeNode root, int sum) {
if (root == null) {
return false;
}
dfs(root,sum);
return ans;
}
private void dfs(TreeNode root,int sum) {
if (root == null) {
return;
}
if (root.left == null && root.right == null) {
if (sum == root.val) {
ans = true;
}
}
dfs(root.left,sum - root.val);
dfs(root.right,sum - root.val);
}
}
·算法分析·
时间复杂度:O(N)
空间复杂度:O(N
微信关注“字节408考研”,
免费获取各院校计算机软件考研信息与专业课资料!