257. 二叉树的所有路径

这道题牵扯到了回溯的思想,一张图让你看懂逻辑
image.png

递归和回溯

回溯和递归是一一对应的,有一个递归,就要有一个回溯。
【诶,用JS好像没感觉到回溯?】

  1. var binaryTreePaths = function(root) {
  2. // 递归回溯法
  3. let res =[];
  4. // 1. 确定递归函数 函数参数
  5. const getPath =function(node,curPath){
  6. // 2. 找到终止条件
  7. if(!node.left&&!node.right){
  8. // 找到叶子节点,即找到本条路径终点
  9. curPath +=node.val;
  10. res.push(curPath);
  11. return;
  12. }
  13. //3. 确定单层递归逻辑
  14. curPath +=node.val+'->';
  15. node.left&&getPath(node.left,curPath);
  16. node.right&&getPath(node.right,curPath);
  17. }
  18. getPath(root,'');
  19. return res;
  20. };