path-sum

题目描述

Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.

For example:
Given the below binary tree andsum = 22,
              5
             / \
            4   8
           /   / \
          11  13  4
         /  \      \
        7    2      1
return true, as there exist a root-to-leaf path5->4->11->2which sum is 22.



妈呀,这道题我也是想用递归的,但是我是想再该方法外生成一个方法来递归,结果错了通不过,下面是代码如果大家知道哪里出问题,麻烦告诉一下小弟

public class HasPathSum {
	boolean check =false;
	public boolean hasPathSum(TreeNode root, int sum) {
		int num = 0; 
		check(sum, root,num);
        return check;
    }
	
	public void check(int sum,TreeNode root,int num) {
		if(root==null)return;
		else {
			if(num>sum||(num+root.val)>sum)return;
			num+=root.val;
			check(sum, root.left,num);
			check(sum, root.right,num);
			if(root.left==null&&root.right==null) {
				if(num==sum)
					check = true;
				return;
			}
		}
	}
	
}

别人的代码很简洁,也通过了,关键是我自己做想不到要这么做:

public class Solution {
    public boolean hasPathSum(TreeNode root, int sum) {
        if(root==null)return false;
		if(root.left==null&&root.right==null) {
			if(sum-root.val==0)return true;
			else return false;
		}
		boolean left = hasPathSum(root.left, sum-root.val);
		boolean right = hasPathSum(root.right, sum-root.val);
		return left||right;
    }
}

补充:

哈哈哈,小弟钻牛角尖了还非弄出来不可,就弄了个test类自己测试。终于发现问题在于,我他妈没有考虑元素是负数啊,于是将判断逻辑是正数的变成全部,就出来了,其实就是删了一句话:

/**
 * Definition for binary tree
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    boolean check =false;
	public boolean hasPathSum(TreeNode root, int sum) {
		int num = 0; 
		check(sum, root,num);
        return check;
    }
	
	public void check(int sum,TreeNode root,int num) {
		if(root==null)return;
		else {
			num+=root.val;//把这句话前面的判断逻辑if(num>sum||(num+root.val)>sum)return;删了
			if(root.left==null&&root.right==null) {
				if(num==sum)
					check = true;
				return;
			}
			check(sum, root.left,num);
			check(sum, root.right,num);
		}
	}
}

结果就通过了!!!!

每日心得:我觉得吧,其实你看别人的解答思路,是为你的编程逻辑提供了燃料,但是你自己编程的时候自己的那个逻辑是最重要的,自己弄清楚自己的逻辑可不可以走。如果是非常错误的,确实不可以走这个逻辑,好啦,知道问题所在然后放弃现在的逻辑,参考别人的逻辑并吸收变成自己的。但是虽然没通过,还是没有发现自己逻辑有问题又有时间,请务必找出问题,能够解决就解决逻辑出错的地方,继续改进,直到用自己的逻辑通过编程题。这真的对你自己码代码背诵正确答案要提高快的多。

最怕的习惯就是自己没通过题目,又迷迷糊糊不知道哪里有问题,不通过各种途径(不怕丑的问人,害羞的自己上网找)去找到正确逻辑然后发现自己错误的点的,就放弃了,直接去copy别人的代码然后去理解别人的步骤,似似非非的觉得哦,原来人家的逻辑是这样额,就照抄别人的答案,并且蒙蔽自己觉得自己解决了一题,心情大好,就去做别的事了。其实对自己的帮助并不大啊

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值