一、题目
给定一个二叉树,返回所有从根节点到叶子节点的路径。
二、思路
回溯算法
三、实现
public List binaryTreePaths(TreeNode root) {
List res = new ArrayList<>();
dfs(root, new ArrayList(), res);
return res;
}
public void dfs(TreeNode root, List list, List res) {
if (root == null) {
return;
}
list.add(root.val);
if (root.left == null && root.right == null) {
StringBuffer sb = new StringBuffer();
for (int num : list) {
if (sb.length() == 0) {
sb.append(num + "");
} else {
sb.append("->").append(num + "");
}
}
res.add(sb.toString());
}
dfs(root.left, list, res);
dfs(root.right, list, res);
list.remove(list.size() - 1);
}