1. 二叉树的所有路径
深度优先遍历(DFS),使用临时变量(这里使用StringBuilder,也可以使用String,但是String是不可变对象,+= 操作将new出多个String对象,影响效率)保存当前节点的值,当节点的左右子树不都为null时,递归调用,当节点左右子树都为null时,即递归到叶子节点,将临时变量的值保存。LeetCode链接
public class LeetCode257 {
public static List<String> binaryTreePaths(TreeNode root) {
List<String> res = new ArrayList<>();
if (root == null) return res;
helper(root, new StringBuilder(), res);
return res;
}
private static void helper(TreeNode node, StringBuilder sb, List<String> res) {
sb.append(node.val);
if (node.left != null || node.right != null) {
sb.append("->");
if (node.left != null) {
helper(node.left, new StringBuilder(sb), res);
}
if (node.right != null) {
helper(node