题目链接:257.二叉树的所有路径
该题目用到了二叉树遍历以及回溯的思想。
二叉树遍历(递归)
这题由于是从上到下的遍历,故采用前序遍历的方法。递归一般分为三步:
1. 明确递归函数的参数以及返回值:
函数传入的参数为根节点以及目前的路径,存放结果集的result,以及记录的路径path。
2. 明确递归终止条件:
该题目所求的路径为从根节点到叶子节点路径,因此递归到叶子节点的时候就结束了,因此,终止条件如下:
if (node.left==null&&node.right==null) {
终止处理逻辑
}
3.单层逻辑:
将路径的值和现在的节点值拼接起来,如此时有左或右节点,则继续做遍历:
curPath+=node.val+'->';
node.left&&getPath(node.left,curPath);
node.right&&getPath(node.right,curPath);
最终完整代码如下:
var binaryTreePaths = function(root) {
let result = []
var dfs = function(node,curpath){
if(node.left==null&&node.right==null){
curpath=curpath+node.val
result.push(curpath)
return
}
curpath+=node.val+"->"
node.left&&dfs(node.left,curpath)
node.right&&dfs(node.right,curpath)
}
dfs(root,'')
return result
};