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二叉树的所有路径的主要内容,如果未能解决你的问题,请参考以下文章