/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ import java.util.List; import java.util.ArrayList; import java.util.Stack;
classSolution{ private List<String> ans;
public List<String> binaryTreePaths(TreeNode root){ ans = new ArrayList<>(); if (root == null) return ans; Stack<Integer> path = new Stack<>(); dfs(root, path); return ans; }
privatevoiddfs(TreeNode node, Stack<Integer> path){ path.push(node.val); if (node.left == null && node.right == null) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < path.size() - 1; i++) { sb.append(path.get(i) + "->"); } sb.append(path.get(path.size() - 1)); ans.add(sb.toString()); } else { if (node.left != null) { dfs(node.left, path); // 退回 path.pop(); } if (node.right != null) { dfs(node.right, path); // 退回 path.pop(); } } } }