程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> LeetCode 113. Path Sum II DFS求解

LeetCode 113. Path Sum II DFS求解

編輯:C++入門知識

LeetCode 113. Path Sum II DFS求解


113. Path Sum II

My SubmissionsTotal Accepted:72944Total Submissions:262389Difficulty:Medium

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]
]

Subscribeto see which companies asked this question

Show Tags Show Similar Problems Have you met this question in a real interview? Yes No

給定一個目標數,找到一棵樹所有的根到葉子和為這個數的路徑。這道題比較簡單,普通的DFS深搜就可以解決。用一個list存儲路徑上的數。注意遞歸結束後把list的最後加入的數移除。

我的AC代碼

public class PathSumII {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		TreeNode n1 = new TreeNode(1);
		TreeNode n2 = new TreeNode(-2);
		TreeNode n3 = new TreeNode(-3);
		TreeNode n4 = new TreeNode(1);
		TreeNode n5 = new TreeNode(3);
		TreeNode n6 = new TreeNode(-2);
		TreeNode n7 = new TreeNode(-1);
		n1.left = n2;
		n1.right = n3;
		n2.left = n4;
		n2.right = n5;
		n3.left = n6;
		n4.left = n7;
		System.out.print(pathSum(n1, 2));
	}

	public static List> pathSum(TreeNode root, int sum) {
		List> result = new ArrayList>();
		if(root != null) dfs(root, sum, 0, new ArrayList(), result);
		return result;
    }
	
	private static void dfs(TreeNode root, int sum, int s, ArrayList path, List> result) {
		if(root.left == null && root.right == null) {
			if(s + root.val == sum) {
				path.add(root.val);
				result.add((List) path.clone());
				path.remove(path.size() - 1);
			}
			return;
		}
		
		path.add(root.val);
		if(root.left != null) dfs(root.left, sum, s + root.val, path, result);
		if(root.right != null) dfs(root.right, sum, s + root.val, path, result);
		path.remove(path.size() - 1);
	}
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved