leetcode 257. 二叉树的所有路径
给定一个二叉树,返回所有从根节点到叶子节点的路径。
说明: 叶子节点是指没有子节点的节点。
示例:
输入:
1
/ \
2 3
\
5
输出: ["1->2->5", "1->3"]
解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-paths
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
采用递归,叶子节点的判断是没有左右子节点
public List<String> binaryTreePaths(TreeNode root) { List<String> list = new ArrayList<>(); if (root == null) { return list; } StringBuilder sb = new StringBuilder(); adjust(root, list, sb, 0); return list; } // 调整 private static void adjust (TreeNode root, List<String> list, StringBuilder sb, int n) { String value = "->" + root.val; int length = value.length(); sb.append(value); if (root.left == null && root.right == null) { list.add(sb.substring(2)); sb.delete(n, sb.length()); return; } if (root.left != null) { adjust(root.left, list, sb, n + length); } if (root.right != null) { adjust(root.right, list, sb,n + length); } sb.delete(n, sb.length()); }
虽然能完成所有的用例,不过效率不高,接下来还需要优化。。