LeetCode笔记:二叉树的所有路径
问题
给你一个二叉树的根节点 root
,按 任意顺序 ,返回所有从根节点到叶子节点的路径。
叶子节点 是指没有子节点的节点。
示例 1:
输入:root = [1,2,3,null,5]
输出:["1->2->5","1->3"]
示例 2:
输入:root = [1]
输出:["1"]
提示:
- 树中节点的数目在范围
[1, 100]
内 -100 <= Node.val <= 100
解法
思路:
深度优先搜索,使用递归遍历所有左右子节点,当没有子节点的时候,就存储路径
代码:
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {string[]}
*/
var binaryTreePaths = function (root) {
let paths = [];
const findPath = (node, path) => {
// 确保有值
if (!node) return;
// 存储新节点
path += node.val;
// 没有子节点的情况下,直接存储当前叶子节点的路径
if (node.left == null && node.right == null) {
paths.push(path);
} else {
// 还有子节点,继续深度优先搜索
path += "->";
findPath(node.left, path);
findPath(node.right, path);
}
};
findPath(root, "");
return paths;
};
评论