相关题目:
二叉树的所有路径. - 力扣(LeetCode)
路径总和. - 力扣(LeetCode)
路径总和2. - 力扣(LeetCode)
class Solution {
public List<String> binaryTreePaths(TreeNode root) {
List<String> res=new ArrayList<>();
if(root==null) return res;
//path用于存储路径
List<Integer> path=new ArrayList<>();
//递归函数内的参数取决于题目,可进行动态添加
traversal(root,path,res);
return res;
}
//主要处理逻辑
public void traversal(TreeNode node,List<Integer> path,List<String> res){
//将当前节点加入path
path.add(node.val);
if(node.left==null&&node.right==null){
//当前节点为叶子节点时的处理逻辑
}
//左子树非空 进行递归
if(node.left!=null){
//递归
traversal(node.left,path,res);
//回溯 删除当前路径最后一位 回到上一节点
path.remove(path.size()-1);
}
//右子树非空 进行递归
if(node.right!=null){
traversal(node.right,path,res);
//回溯 删除当前路径最后一位 回到上一节点
path.remove(path.size()-1);
}
}
}