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.
思路:采用深度优先遍历。
/** * 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) { List<String> list = new ArrayList<>(); binaryTreePathsHelper(root, list, new String()); return list; } public void binaryTreePathsHelper(TreeNode root, List<String> list, String string) { if (root == null) { return; } if (root.left == null && root.right == null) { string = string+ root.val; list.add(string); return; } binaryTreePathsHelper(root.left, list, string + root.val + "->"); binaryTreePathsHelper(root.right, list, string + root.val + "->"); } }