• leetcode 113. 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 and sum = 22,
                  5
                 / 
                4   8
               /   / 
              11  13  4
             /      / 
            7    2  5   1
    

    return

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


    思路:此题与上题path sum一脉同源。仅仅是改变了下题目的描写叙述。详细思路是用回溯法,将所有的节点所有遍历。

    详细思路和代码例如以下:

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    public class Solution {
    	/**
    	 * 回溯法求解
    	 * 总体思想是遍历。然后加入list逐一试探
    	 * 符合要求的加入结果集
    	 * 不符合要求的删除,然后回溯
    	 */
        List<List<Integer>> list = new ArrayList<List<Integer>>();
        public List<List<Integer>> pathSum(TreeNode root, int sum) {
            if(root == null){
                return list;
            }
            path(root,sum,new ArrayList<Integer>());
            return list;
        }
        
        private void path(TreeNode root,int sum, List<Integer> al){
            if(root == null){
                return;
            }
            if(root.val == sum){
                if(root.left == null && root.right == null){
                	al.add(root.val);
                	//加入结果一定要又一次生成实例
                    list.add(new ArrayList<Integer>(al));
                    al.remove(al.size()-1);//删除
                    return;
                }
            }
            al.add(root.val);
            path(root.left,sum - root.val,al);
            path(root.right,sum - root.val,al);
            al.remove(al.size()-1);//一定要删除,确保回溯准确
        }
    }




  • 相关阅读:
    图书管理系统
    关键路径
    最短路径

    最小生成树、最短路径
    Huffman编码
    LA 3401
    UVA 10881
    OI 刷题记录——每周更新
    4396: [Usaco2015 dec]High Card Wins
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8376673.html
Copyright © 2020-2023  润新知