leetcode112 二叉树路径总和(DFS递归和BFS遍历)
程序员文章站
2022-05-20 11:42:45
...
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。
思路:
方法一:递归
1.终止条件:叶子节点,return false
2.递归返回值:
left+=递归返回值
right+=递归返回值
if(left!=target && right!=target) return false
return true
方法二:BFS
用两个队列q1、q2 q1用来装当前的node,q2用来装当前路径下的sum
var hasPathSum = function(root, targetSum) {
//方法一:递归
// if(root==null) return false
// if(root.left==null && root.right==null){
// return targetSum-root.val==0
// }
// return hasPathSum(root.left,targetSum-root.val) || hasPathSum(root.right,targetSum-root.val)
//方法二:BFS
if(root==null) return false
let q1=[]
let q2=[]
q1.push(root)
q2.push(root.val)
while(q1.length!=0){
let node=q1.shift()
let temp=q2.shift()
if(node.left==null && node.right==null){
if(targetSum==temp) return true
}
if(node.left!=null){
q1.push(node.left)
q2.push(node.left.val+temp)
}
if(node.right!=null){
q1.push(node.right)
q2.push(node.right.val+temp)
}
}
return false
};
上一篇: leetcode 3. 无重复字符的最长子串 c++版
下一篇: 网络的核(2014)