1. 程式人生 > >leetcode第37題(path-sum-ii)

leetcode第37題(path-sum-ii)

題目:

Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum. 

For example:
Given the below binary tree andsum = 22, 
              5
             / \
            4   8
           /   / \
          11  13  4
         /  \    / \
        7    2  5   1

return 

[
   [5,4,11,2],
   [5,8,4,5]
]

思路:注意前序遍歷,返回前面一個狀態,遞迴

程式碼:

public class Solution {
    ArrayList<ArrayList<Integer>> res = new ArrayList<>();
    public ArrayList<ArrayList<Integer>> pathSum(TreeNode root, int sum) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        paths(root, sum, list);
        return 
res; } private void paths(TreeNode root, int sum, ArrayList<Integer> list){ if(root == null) return; if(root.left == null && root.right == null && sum - root.val == 0){ list.add(root.val); res.add(new ArrayList<Integer>(list)); list.remove(list.size() - 1
); return; } list.add(root.val); paths(root.left, sum - root.val, list); paths(root.right, sum - root.val, list); list.remove(list.size() - 1); } }

Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum. 

For example:
Given the below binary tree andsum = 22, 
              5
             / \
            4   8
           /   / \
          11  13  4
         /  \    / \
        7    2  5   1

return 

[
   [5,4,11,2],
   [5,8,4,5]
]

相關推薦

leetcode37path-sum-ii

題目: Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.  For example:Given the below

leetcode383. Ransom Note

Given an arbitrary ransom note string and another string containing letters from all the magazines, write a function that will return true if the rans

LeetCode85最大矩形

原題如下: 給定一個僅包含 0 和 1 的二維二進位制矩陣,找出只包含 1 的最大矩形,並返回其面積。 示例: 輸入: [ [“1”,“0”,“1”,“0”,“0”], [“1”,“0”,“1”,“1”,“1”], [“1”,“1”,“1”,“1”,“1”],

LeetCode39之Combination Sum兩種方法

思路:兩種方法都是利用遞歸回溯,第二方法在第一種方法的基礎上對原始資料先進行排序,這樣可以剪枝,加快計算速度。第一種方法在LeetCode上測試執行的時間是24ms,第二種方法執行時間為16ms。 方

LeetCode每天一】Combination Sum II組合和II

turn mic and microsoft str find get break .so Given a collection of candidate numbers (candidates) and a target number (target), find all

LeetCode-Easy刷(26) 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

LeetCode87擾亂字串

原題如下: 給定一個字串 s1,我們可以把它遞迴地分割成兩個非空子字串,從而將其表示為二叉樹。 下圖是字串 s1 = “great” 的一種可能的表示形式。 great / gr eat / \ / g r e at / a

LeetCode——十三羅馬數字轉整數

13.羅馬數字轉整數 題目描述 思路 程式碼示例 題目描述 羅馬數字包含以下七種字元: I

LeetCode——迴文數

9.迴文數 題目描述 思路 程式碼示例 題目描述 判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。 示例 1: 輸入: 121 輸出: true 示例 2:

leetcode 105從前序與中序遍歷序列構造二叉樹106從中序與後序遍歷序列構造二叉樹python解法用時40ms

leetcode 第105題(從前序與中序遍歷序列構造二叉樹) ,第106題(從中序與後序遍歷序列構造二叉樹)python解法(用時40ms) 先從105題開始: 第105題是利用前序和中序恢復二叉樹,主要還是應用遞迴的思想。 首先看一個簡單的例子,在如下樹中: 由於前序遍歷第一個

LeetCode記錄——374猜數字大小

題目描述 我們正在玩一個猜數字遊戲。 遊戲規則如下: 我從 1 到 n 選擇一個數字。 你需要猜我選擇了哪個數字。 每次你猜錯了,我會告訴你這個數字是大了還是小了。 你呼叫一個預先定義好的介面 guess(int num),它會返回 3 個可能的結果(-1,1 或 0):

LeetCode記錄——3424的冪

給定一個整數 (32 位有符號整數),請編寫一個函式來判斷它是否是 4 的冪次方。 示例 1: 輸入: 16 輸出: true 示例 2: 輸入: 5 輸出: false 思路分析 跟3的冪一模一樣的啦,詳情請見之前的部落格

LeetCode記錄——3263的冪

題目描述 給定一個整數,寫一個函式來判斷它是否是 3 的冪次方。 示例 1: 輸入: 27 輸出: true 示例 2: 輸入: 0 輸出: false 示例 3: 輸入: 9 輸出: true 示例 4:

LeetCodeLeetCode——1:Two Sum

Given an array of integers, find two numbers such that they add up to a specific target number. The function twoSum should return indices of the two numb

leetcode31triangle

題目: Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.  For e

leetcode47binary-tree-level-order-traversal

題目: Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).  For example

leetcode50recover-binary-search-tree

題目: Two elements of a binary search tree (BST) are swapped by mistake.  Recover the tree without changing its structure.  Note:A soluti

leetcode49same-tree

題目: Given two binary trees, write a function to check if they are equal or not.  Two binary trees are considered equal if they are stru

leetcode43binary-tree-level-order-traversal

題目: Given inorder and postorder traversal of a tree, construct the binary tree.  Note:  You may assume that duplicates do not exist in

LeetCode101對稱二叉樹

原題如下: 給定一個二叉樹,檢查它是否是映象對稱的。 例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的。 1 / 2 2 / \ / 3 4 4 3 但是下面這個 [1,2,2,null,3,null,3] 則不是映象對稱的: 1 / 2