Title: Binary Tree Paths Source: leetcode.com
Given a binary tree, return all root-to-leaf paths.
For example, given the following binary tree:
1 2 3 4 5 |
1 / \ 2 3 \ 5 |
All root-to-leaf paths are:
1 |
["1->2->5", "1->3"] |
Java solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
/* https://leetcode.com/problems/binary-tree-paths/ */ import java.util.List; import java.util.ArrayList; public class BinaryTreePaths { public static void main(String args[]) { BinaryTreePaths bt = new BinaryTreePaths(); TreeNode root = new TreeNode(1); root.left = new TreeNode(2); root.left.right = new TreeNode(5); root.right = new TreeNode(3); System.out.println(bt.binaryTreePaths(root)); } public List<String> binaryTreePaths(TreeNode root) { List<String> pathList = new ArrayList<>(); if(root==null) return pathList; return helper(root, root.val+"", pathList); } public List<String> helper(TreeNode root, String path, List<String> pathList) { if(root.left==null && root.right == null) { pathList.add(path); //return pathList; } else { //path = path + "->" + root.val; if(root.left!=null) helper(root.left, path+"->"+root.left.val, pathList); if(root.right!=null) helper(root.right, path+"->"+root.right.val, pathList); } return pathList; } } class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int val) { this.val = val; } } |