1. 程式人生 > 其它 >LeetCode113.二叉樹路徑和

LeetCode113.二叉樹路徑和

技術標籤:LeetCode二叉樹leetcode

給定一個二叉樹和一個目標和,找到所有從根節點到葉子節點路徑總和等於給定目標和的路徑。

說明: 葉子節點是指沒有子節點的節點。

示例:
給定如下二叉樹,以及目標和 sum = 22
在這裡插入圖片描述返回:
在這裡插入圖片描述

遞歸回溯(java)

class Solution {
    public List<List<Integer>> pathSum(TreeNode root, int targetSum) {
        List<List<Integer>> res = new ArrayList<
>(); traversal(root, targetSum, new ArrayList<Integer>(), res); return res; } public void traversal(TreeNode node, int sum, List<Integer> list, List<List<Integer>> res) { if (node == null) { return; } list.add(node.
val); // 如果是葉子結點 if (node.left == null && node.right == null) { // 如果sum等於節點值,說明這條路徑正好滿足題意 if (sum == node.val) { // 新增到結果集合中,注意這裡一定要新建立一個list res.add(new ArrayList<>(list)); } // 回溯 list.
remove(list.size()-1); return; } // 如果節點不是葉子結點,遞迴左右葉子結點 traversal(node.left, sum-node.val, list, res); traversal(node.right, sum-node.val, list, res); // 回溯 list.remove(list.size()-1); } }