# 二叉树的所有路径

  1. 二叉树的所有路径

来源:力扣(LeetCode) 链接 (opens new window):https://leetcode.cn/problems/binary-tree-paths/

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

github (opens new window)

# 问题

给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点

# 思路

var binaryTreePaths = function (root) {
  let res = [];
  if (!root) {
    return res;
  }

  if (!root.left && !root.right) {
    return [`${root.val}`];
  }

  let leftPaths = binaryTreePaths(root.left);
  let rightPaths = binaryTreePaths(root.right);

  leftPaths.forEach((leftPath) => {
    res.push(`${root.val}->${leftPath}`);
  });
  rightPaths.forEach((rightPath) => {
    res.push(`${root.val}->${rightPath}`);
  });

  console.log("res", res);
  // res [ '2->5' ]
  // res [ '1->2->5', '1->3' ]

  return res;
};
var binaryTreePaths = function (root) {
  const paths = [];
  const helper = (root, path) => {
    if (root) {
      path += root.val.toString();
      if (root.left === null && root.right === null) {
        // 当前节点是叶子节点
        paths.push(path); // 把路径加入到答案中
      } else {
        path += "->"; // 当前节点不是叶子节点,继续递归遍历
        construct_paths(root.left, path);
        construct_paths(root.right, path);
      }
    }
  };

  helper(root, "");
  return paths;
};
陕ICP备20004732号-3