257. Binary Tree Paths

Given a binary tree, return all root-to-leaf paths.

For example, given the following binary tree:

 

   1
 /   \
2     3
 \
  5

 

All root-to-leaf paths are:

["1->2->5", "1->3"]

 

Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.

 

Subscribe to see which companies asked this question

Hide Tags
 Tree Depth-first Search
Hide Similar Problems
 (M) Path Sum II
 
 
BFS Solution:
public List<String> binaryTreePaths(TreeNode root) {
    List<String> answer = new ArrayList<String>();
    if (root != null) searchBT(root, "", answer);
    return answer;
}
private void searchBT(TreeNode root, String path, List<String> answer) {
    if (root.left == null && root.right == null) answer.add(path + root.val);
    if (root.left != null) searchBT(root.left, path + root.val + "->", answer);
    if (root.right != null) searchBT(root.right, path + root.val + "->", answer);
}

 

 
DFS Solution:
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public List<String> binaryTreePaths(TreeNode root) {
        ArrayList<String> paths = new ArrayList<String>();
        dfs(root, new ArrayDeque<Integer>(), paths);
        return paths;
    }
    
    private void dfs(TreeNode node, Deque<Integer> path, List<String> paths) {
        if(node == null)
            return;
            
        path.add(node.val);
        
        if(node.left == null && node.right == null) {
            paths.add(mkPath(path));
        }
        
        dfs(node.left, path, paths);
        dfs(node.right, path, paths);
        path.removeLast();
    }
    
    private String mkPath(Deque<Integer> path) {
        if(path.isEmpty())
            return "";
            
        StringBuilder sb  = new StringBuilder();
        for(Integer i : path) {
            sb.append("->").append(i);
        }
        return sb.toString().substring(2);
    }
    
}

 

 
 
 
 
 
posted @ 2016-04-09 12:55  新一代的天皇巨星  阅读(160)  评论(0)    收藏  举报