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"]Solution
I. Java 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) { List<String> result = new ArrayList<String>(); if(root == null) return result; LinkedList<TreeNode> path = new LinkedList<TreeNode>(); path.push(root); TreeNode temp; while(!path.isEmpty()){ temp = path.peek(); if(temp.left != null){ path.push(temp.left); }else if(temp.right != null){ path.push(temp.right); }else{ result.add(listToString(path)); temp = path.pop(); while(!path.isEmpty()){ if(path.peek().left == temp && path.peek().right!=null){ path.push(path.peek().right); break; } temp = path.pop(); } } } return result; } public String listToString(LinkedList<TreeNode> path){ ListIterator<TreeNode> iterator = path.listIterator(path.size()); StringBuilder builder = new StringBuilder(); builder.append(iterator.previous().val); while(iterator.hasPrevious()){ builder.append("->" + iterator.previous().val); } return builder.toString(); } }
No comments:
Post a Comment