【力扣题解】P257-二叉树的所有路径-Java题解

花无缺

‍博客主页:@花无缺
欢迎 点赞 收藏⭐ 留言 加关注✅!
本文由 花无缺 原创

收录于专栏 【力扣题解】


文章目录

  • 【力扣题解】P257-二叉树的所有路径-Java题解
    • 题目描述
    • 题解
    • 总结


【力扣题解】P257-二叉树的所有路径-Java题解

P257.二叉树的所有路径

题目描述

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

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

示例 1:

【力扣题解】P257-二叉树的所有路径-Java题解_第1张图片

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

示例 2:

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

提示:

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

题解

递归法:

public List<String> binaryTreePaths(TreeNode root) {
    List<String> res = new ArrayList<>();
    dfs(root,"",res);
    return res;
}
private static void dfs(TreeNode root, String path, List<String> list) {
    // 节点为空, 递归终止
    if (root == null) return;
    // 当前节点是叶子节点, 说明找到了一条路径, 加入结果列表中
    if (root.left == null && root.right == null) {
        list.add(path + root.val);
    }
    // 当前节点不是叶子节点, 则继续遍历左子树和右子树寻找路径
    dfs(root.left,path + root.val + "->",list);
    dfs(root.right,path + root.val + "->",list);
}

总结

这里我们使用递归的方法来获取二叉树的所有路径,在我们对树进行递归遍历时,如果当前节点是叶子节点,说明我们就找到了一条满足条件的路径,如果当前节点不是叶子节点,那么就继续递归遍历左右子树,直到遍历到叶子节点。

作者:花无缺(huawuque404.com)


欢迎关注我的博客:花无缺-每一个不曾起舞的日子都是对生命的辜负~
一起进步-刷题专栏:【力扣题解】
往期精彩好文:
【CSS选择器全解指南】
【HTML万字详解】
你们的点赞 收藏⭐ 留言 关注✅
是我持续创作,输出优质内容的最大动力!
谢谢!

你可能感兴趣的:(力扣题解,leetcode,java,算法,数据结构)