主要思想:根据题可知是由根节点到叶子节点,根左右及根右左都可,那么我采用前序遍历(根左右)来寻找路径,当sum减去当前节点值以及子节点均为null时返回真值,而当root为null时返回假值,那么只要递归前序遍历树,返回左右子树真假值的‘或’结果即可。
* function TreeNode(x) {
* this.val = x;
* this.left = null;
* this.right = null;
* }
*/
/**
*
* @param root TreeNode类
* @param sum int整型
* @return bool布尔型
*/
function hasPathSum( root , sum ) {
if(root==null) return false;
sum=sum-root.val;
if(sum==0&&root.left==null&&root.right==null) return true;
return hasPathSum(root.left,sum)||hasPathSum(root.right,sum);
}
module.exports = {
hasPathSum : hasPathSum
};