# 二叉树的所有路径
- 二叉树的所有路径
来源:力扣(LeetCode) 链接 (opens new window):https://leetcode.cn/problems/binary-tree-paths/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
# 问题
给你一个二叉树的根节点 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;
};