LeetCode:257. 二叉树的所有路径
给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。
叶子节点 是指没有子节点的节点。
示例 1:
输入:root = [1,2,3,null,5] 输出:["1->2->5","1->3"]
示例 2:
输入:root = [1] 输出:["1"]
提示:
-
树中节点的数目在范围 [1, 100] 内 -100 <= Node.val <= 100
解题思路
1.首先定义一个paths数组来存放所有的路径 2.然后递归左右子树,递归的过程中不断拼接path,直到叶子节点,将所有拼接起来的节点字符串path加入到paths中,也就是其中一条路径 3.最后返回paths即可
代码
/** * 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) { const paths = []; const dfs = (root, path) => { // 传入递归的节点和当前路径 if(root) { path += root.val.toString();// 加入当前节点 // 若为叶子结点则将所有连接起来的节点字符串加入到paths中,也就是其中一条路径 if(root.left == null && root.right == null) { paths.push(path); }else { path += "->"; // 若不是叶子节点则继续递归左右子树 dfs(root.left, path); dfs(root.right, path); } } } dfs(root, ""); return paths; };