257. 二叉树的所有路径
思路:题目:给定一个二叉树,返回所有从根节点到叶子节点的路径。
这是一道很简单的考察回溯算法的题目,只要分别对左右子节点进行递归即可(DFS),这样就可以写出代码:
public void backtracking(TreeNode root, String path, LinkedList<String> paths) {
if (root != null) {
path += Integer.toString(root.val);
if ((root.left == null) && (root.right == null)) // 当前节点是叶子节点
paths.add(path); // 把路径加入到答案中
else {
path += "->"; // 当前节点不是叶子节点,继续递归遍历
backtracking(root.left, path, paths);
backtracking(root.right, path, paths);
}
}
}
public List<String> binaryTreePaths(TreeNode root) {
LinkedList<String> paths = new LinkedList();
backtracking(root, "", paths);
return paths;
}
这时候我发现String优点浪费空间,可否换成StringBuilder呢,众所周知,StringBuilder适合加减字符串的场景,避免创建不必要的对象,所以我将String 换成了StringBuilder:
public void backtracking(TreeNode root, StringBuilder path, LinkedList<String> paths