java当中的基本数据类型在函数中传递是值传递。
而对象的传递方式是引用,所以这里可以把boolean包裹在一个对象当中,来作为一个全局的引用使用
import java.util.Stack; /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public class Flag{ public boolean res; } public boolean hasPathSum(TreeNode root, int sum) { // 主要思想是深度优先遍历 if(root==null) return false; Flag flag=new Flag(); flag.res=false; DFS(root,sum,0,flag); return flag.res; } public static void DFS(TreeNode root,int sum,int total,Flag flag) { if(root.left==null&&root.right==null) { if(sum==total+root.val) flag.res=true; return ; } if(root.left!=null) { DFS(root.left,sum,total+root.val,flag); } if(root.right!=null) { DFS(root.right,sum,total+root.val,flag); } } }