给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。
叶子节点 是指没有子节点的节点。
Given the root of a binary tree, return all root-to-leaf paths in any order.
A leaf is a node with no children.
示例 1:
输入:root = [1,2,3,null,5]
输出:["1->2->5","1->3"]
示例 2:
输入:root = [1]
输出:["1"]
深度优先搜索
最直观的方法是使用深度优先搜索。在深度优先搜索遍历二叉树时,我们需要考虑当前的节点以及它的孩子节点。
- 如果当前节点不是叶子节点,则在当前的路径末尾添加该节点,并继续递归遍历该节点的每一个孩子节点。
- 如果当前节点是叶子节点,则在当前路径末尾添加该节点后我们就得到了一条从根节点到叶子节点的路径,将该路径加入到答案即可。
如此,当遍历完整棵二叉树以后我们就得到了所有从根节点到叶子节点的路径。
var binaryTreePaths = function (root) {
let newList = []
var treePaths = function (root, path) {
if (root) {
if (root.left == null && root.right == null) {//当前节点是叶子节点
path += root.val + ""
newList.push(path)//把路径加入到答案中
return
}
path += root.val + "->"// 当前节点不是叶子节点,继续递归遍历
treePaths(root.left, path)
treePaths(root.right, path)
}
};
treePaths(root, "")
return newList
};
leetcode:https://leetcode-cn.com/problems/binary-tree-paths/