// 定義一個名為 Solution 的類
class Solution {// 定義一個名為 hasPathSum 的公共方法,接收一個 TreeNode 類型的根節點 root 和一個整數 targetSum 作為參數// 方法返回一個布爾值,表示從根節點開始是否存在一條路徑,使得路徑上所有節點的值之和等于給定的目標值 targetSumpublic boolean hasPathSum(TreeNode root, int targetSum) {// 基本終止條件:如果根節點為空,那么不存在這樣的路徑,直接返回 falseif(root == null){return false;}// 更新目標值:從當前節點的值中減去目標和targetSum -= root.val;// 特殊情況:如果當前節點是一個葉子節點(即左右子節點都為空),則檢查此時的目標值是否為 0,// 若為 0,說明找到了一條從根節點到葉子節點、路徑和為目標值的路徑,返回 trueif(root.left == null && root.right == null){return targetSum == 0;}// 遞歸遍歷左子樹if(root.left != null){// 調用自身方法查找左子樹中是否存在滿足條件的路徑boolean left = hasPathSum(root.left, targetSum);// 如果在左子樹中找到了滿足條件的路徑,則直接返回 trueif(left){return true;}}// 遞歸遍歷右子樹if(root.right != null){// 調用自身方法查找右子樹中是否存在滿足條件的路徑boolean right = hasPathSum(root.right, targetSum);// 如果在右子樹中找到了滿足條件的路徑,則直接返回 trueif(right){return true;}}// 如果左右子樹都沒有找到滿足條件的路徑,則返回 falsereturn false;}
}
這個方法采用遞歸的方式遍歷二叉樹,對每一個節點,首先檢查它是否為葉子節點(左右子節點均為空),如果是且路徑和恰好等于目標值,就返回 true;否則,分別遞歸地在其左子樹和右子樹中查找是否存在滿足條件的路徑。最后,如果在左右子樹中都沒有找到滿足條件的路徑,則返回 false。