public List<String> binaryTreePaths(TreeNode root) {
List<String> res = new ArrayList<>();// 存最终的结果
traversal(root, "", res);
return res;
}
public void traversal(TreeNode t, String s, List<String> res) {
if (t == null) {
return;
}
// 前序遍历 中
if (t.left == null && t.right == null) {
// t是叶子节点,该收集结果了
res.add(new StringBuilder(s).append(t.val).toString());
return;
}
String tmp = new StringBuilder(s).append(t.val).append("->").toString();
traversal(t.left, tmp, res);
traversal(t.right, tmp, res);
//结束 不需要回溯,因为传入tmp并不会改变tmp的值
}