leetcode简单257二叉树的所有路径

Posted qq_40707462

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode简单257二叉树的所有路径相关的知识,希望对你有一定的参考价值。


思路:回溯/dfs

class Solution {
    public List<String> binaryTreePaths(TreeNode root) {
        List<String>res=new ArrayList<>();
        if(root==null)return res;
        dfs(root,"",res);
        return res;
    }
    public void dfs(TreeNode root,String path,List<String>res){
        if(root==null) return;
        path+=root.val;
        if(root.left==null && root.right==null){
            res.add(path);
        }else{
            dfs(root.left,path+"->",res);
            dfs(root.right,path+"->",res);
        }
    }
}

此时【回溯】藏在函数参数里传递

如下是通过不了的:

if (cur.left!=null) {
    path += "->";
    traversal(cur.left, path, res); // 左
}
if (cur.right!=null) {
    path += "->";
    traversal(cur.right, path, res); // 右
}

必须有【退回】的步骤才行:

if (cur.left!=null) {
    path += "->";
    traversal(cur.left, path, res); // 左
    path.pop(); //回溯,弹出箭头和值,string不能用pop,只是示意
    path.pop();
}
if (cur.right!=null) {
    path += "->";
    traversal(cur.right, path, res); // 右
    path.pop(); // 回溯
    path.pop();
}

以上是关于leetcode简单257二叉树的所有路径的主要内容,如果未能解决你的问题,请参考以下文章

[LeetCode]257. 二叉树的所有路径

[LeetCode]257. 二叉树的所有路径

LeetCode-257-二叉树的所有路径

LeetCode-257-二叉树的所有路径

LeetCode--257--二叉树的所有路径

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