1. 程式人生 > 實用技巧 >LeetCode112. 路徑總和

LeetCode112. 路徑總和

☆☆☆方法1:遞迴

☆☆☆方法2:BFS。使用兩個佇列,分別儲存將要遍歷的節點,以及根節點到這些節點的路徑和。

拓展練習:列印路徑 ------->劍指24.二叉樹中和為某一值的路徑

class Solution {
    public boolean hasPathSum(TreeNode root, int sum) {
        /**
         * 方法1:遞迴
         */
        if (root == null) return false;
        // 到達葉子節點時,遞迴終止,判斷 sum 是否符合條件。
        if (root.left == null
&& root.right == null) { return sum == root.val; } return hasPathSum(root.left, sum - root.val) || hasPathSum(root.right, sum - root.val); /** * 方法2:BFS */ /* if (root == null) return false; Queue<TreeNode> queue = new LinkedList<>(); Queue<Integer> queue1 = new LinkedList<>(); queue.offer(root); queue1.offer(root.val); while (!queue.isEmpty()) { int size = queue.size(); for (int i = 0; i < size; i++) { TreeNode cur = queue.poll(); int temp = queue1.poll(); if (cur.left == null && cur.right == null) { if (temp == sum) return true; } if (cur.left != null) { queue.offer(cur.left); queue1.offer(temp + cur.left.val); } if (cur.right != null) { queue.offer(cur.right); queue1.offer(temp + cur.right.val); } } } return false;
*/ } }