257. 二叉树的所有路径

题目

给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。

叶子节点 是指没有子节点的节点。

示例1:

1
2
输入:root = [1,2,3,null,5]
输出:["1->2->5","1->3"]

示例2:

1
2
输入:root = [1]
输出:["1"]

提示:

  • 树中节点的数目在范围 [1, 100]
  • -100 <= Node.val <= 100

解法

解法一:

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public List<String> binaryTreePaths(TreeNode root) {
if (Objects.isNull(root)) {
return Collections.emptyList();
}

if (Objects.isNull(root.left) && Objects.isNull(root.right)) {
return Collections.singletonList(root.val + "");
}
List<String> result = new ArrayList<>();
travel(root.left, result, String.valueOf(root.val));
travel(root.right, result, String.valueOf(root.val));
return result;
}

private void travel(TreeNode root, List<String> result, String pre) {
if (Objects.isNull(root)) {
return;
}

if (Objects.isNull(root.left) && Objects.isNull(root.right)) {
result.add(pre + "->" + root.val);
}

if (!Objects.isNull(root.left)) {
travel(root.left, result, pre + "->" + root.val);
}

if (!Objects.isNull(root.right)) {
travel(root.right, result, pre + "->" + root.val);
}
}
0%