题目:
Given a binary tree, return all root-to-leaf paths.
Note: A leaf is a node with no children.
解答:
采用深度优先遍历的思想,通过递归调用,逐步搜索叶子节点,
- 用 list 记录最后的结果,用一个字符串 path 来记录当前路径
- 如果是叶子节点,就把这个路径保存到 list 中
- 如果不是叶子节点,就把这个节点的值放入到path中,然后再继续调用,直到达到叶子节点为止
class Solution {
public List<String> binaryTreePaths(TreeNode root) {
List<String> list = new ArrayList<>();
if(root!=null) {
listAdd(list, root, "");
}
return list;
}
private void listAdd (List<String> list, TreeNode root, String path) {
if(root.left==null && root.right==null){
list.add(path + root.val);
}
if(root.left!=null) {
listAdd(list, root.left, path+root.val+"->");
}
if(root.right!=null) {
listAdd(list, root.right, path+root.val+"->");
}
}
}