RoottoLeafPaths
题目:
找到binary tree的所有Root to Leaf的 Paths 。
题目分析:
这道题可以通过top-down的方式解决。
代码:
找到binary tree的所有Root to Leaf的 Paths 。
题目分析:
这道题可以通过top-down的方式解决。
代码:
public class RoottoLeafPaths { static class TreeNode{ int val; TreeNode left; TreeNode right; public TreeNode(int val){ this.val = val; } } public static List<String> paths = new ArrayList<>(); public List<String> getPaths(TreeNode root){ if(root == null){ return paths; } StringBuilder sb = new StringBuilder(); helper(root, sb); return paths; } private void helper(TreeNode root, StringBuilder sb) { sb.append(root.val); if(root.left == null && root.right == null){ paths.add((new StringBuilder(sb)).toString()); } else { if(root.left != null && root.right != null){ helper(root.left, (new StringBuilder(sb)).append("->")); helper(root.right, (new StringBuilder(sb)).append("->")); } else if(root.left != null){ helper(root.left, new StringBuilder(sb.append("->"))); } else { helper(root.right, new StringBuilder(sb.append("->"))); } } } public static void main(String[] args){ TreeNode node4 = new TreeNode(4); TreeNode node1 = new TreeNode(1); TreeNode node2 = new TreeNode(2); TreeNode node3 = new TreeNode(3); TreeNode node5 = new TreeNode(5); TreeNode node6 = new TreeNode(6); TreeNode node7 = new TreeNode(7); node3.right = node2; node3.left = node1; node6.left = node5; node6.right = node7; node4.left = node3; node4.right = node6; RoottoLeafPaths roottoLeafPaths = new RoottoLeafPaths(); roottoLeafPaths.getPaths(node4); for(int i = 0; i <= paths.size() - 1; i++){ System.out.println(paths.get(i)); } } }

Comments
Post a Comment