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



哈喽!大家好,我是【学无止境小奇】,一位热爱分享各种技术的博主!

⭐【学无止境小奇】的创作宗旨:每一条命令都亲自执行过,每一行代码都实际运行过,每一种方法都真实实践过,每一篇文章都良心制作过。✊✊✊

⭐【学无止境小奇】的博客中所有涉及命令、代码的地方,除了提供图片供大家参考,另外会在图片下方提供一份纯文本格式的命令或者代码方便大家粘贴复制直接执行命令或者运行代码。

⭐如果你对技术有着浓厚的兴趣,欢迎关注【学无止境小奇】,欢迎大家和我一起交流。

❤️❤️❤️感谢各位朋友接下来的阅读❤️❤️❤️

文章目录

  • 一、leetcode算法
    • 1、二叉树的所有路径
      • 1.1、题目
      • 1.2、思路
      • 1.3、答案

一、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、答案

leetcode算法257.二叉树的所有路径_第1张图片

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);
            }
        }
    }
}

你可能感兴趣的:(算法,leetcode,算法,哈希算法)