leetcode算法257.二叉树的所有路径

简介: 当给你一个二叉树的根节点 root 时,如何按任意顺序 ,返回所有从根节点到叶子节点的路径?本文带大家解决这个问题。

一、leetcode算法



1、二叉树的所有路径


1.1、题目


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


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


示例 1:


输入:root = [1,2,3,null,5]

输出:[“1->2->5”,“1->3”]


示例 2:


输入:root = [1]

输出:[“1”]


1.2、思路


思路一:本题我们可以使用深度优先遍历,在进行深度优先遍历的时候我们要考虑当前的节点以及它的孩子节点。


如果当前节点不是叶子节点,则在当前的路径末尾添加该节点,并继续递归遍历该节点的每一个孩子节点。


如果当前节点是叶子节点,则在当前路径末尾添加该节点后我们就得到了一条从根节点到叶子节点的路径,将该路径加入到答案即可。


1.3、答案


21.png


class Solution {
    public List<String> binaryTreePaths(TreeNode root) {
        List<String> paths = new ArrayList<>();
        resultPath(root,"",paths);
        return paths;
    }
    public void resultPath(TreeNode root,String path,List<String> paths){
        if(root != null){
            StringBuffer pathSb = new StringBuffer(path);
            pathSb.append(Integer.toString(root.val));
            if(root.left == null && root.right == null){ // 当前节点是叶子节点
                paths.add(pathSb.toString());   //把路径加入到答案中
            }else{
                pathSb.append("->");    //当前节点不是叶子节点,继续递归遍历
                resultPath(root.left,pathSb.toString(),paths);
                resultPath(root.right,pathSb.toString(),paths);
            }
        }
    }
}


相关文章
|
4天前
|
存储 算法
二叉树进阶-学会层序遍历助你一次刷完leetcode10道题
文章深入探讨了二叉树的层序遍历方法,并展示了如何通过队列实现层序遍历的算法逻辑,同时指出掌握层序遍历技巧可以帮助解决LeetCode上的多道相关题目。
二叉树进阶-学会层序遍历助你一次刷完leetcode10道题
|
4天前
|
算法 Java
LeetCode第94题二叉树的中序遍历
文章介绍了LeetCode第94题"二叉树的中序遍历"的解法,使用递归实现了中序遍历的过程,遵循了"左根右"的遍历顺序,并提供了清晰的Java代码实现。
LeetCode第94题二叉树的中序遍历
|
4天前
|
存储 算法 Linux
LeetCode第71题简化路径
文章讲述了LeetCode第71题"简化路径"的解题方法,利用栈的数据结构特性来处理路径中的"."和"..",实现路径的简化。
LeetCode第71题简化路径
|
4天前
|
算法
LeetCode第64题最小路径和
LeetCode第64题"最小路径和"的解题方法,运用动态规划思想,通过构建一个dp数组来记录到达每个点的最小路径和,从而高效求解。
LeetCode第64题最小路径和
|
11天前
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
29 6
|
7天前
|
算法
基于多路径路由的全局感知网络流量分配优化算法matlab仿真
本文提出一种全局感知网络流量分配优化算法,针对现代网络中多路径路由的需求,旨在均衡分配流量、减轻拥塞并提升吞吐量。算法基于网络模型G(N, M),包含N节点与M连接,并考虑K种不同优先级的流量。通过迭代调整每种流量在各路径上的分配比例,依据带宽利用率um=Σ(xm,k * dk) / cm来优化网络性能,确保高优先级流量的有效传输同时最大化利用网络资源。算法设定收敛条件以避免陷入局部最优解。
|
11天前
|
存储 算法 Java
LeetCode经典算法题:打家劫舍java详解
LeetCode经典算法题:打家劫舍java详解
30 2
|
11天前
|
人工智能 算法 Java
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
26 1
|
11天前
|
存储 算法 Java
LeetCode经典算法题:预测赢家+香槟塔java解法
LeetCode经典算法题:预测赢家+香槟塔java解法
22 1
|
1天前
|
算法
【初阶数据结构篇】二叉树算法题
二叉树是否对称,即左右子树是否对称.