
js
/**
* 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 ans = []
const path = []
const backTracking = (node) => {
if (node === null) {
return
}
path.push(node.val)
if (node.left === null && node.right === null) {
ans.push(path.join('->'))
path.pop() // ⚠️注意要pop,防止叶子节点一直在path里
return
}
backTracking(node.left)
backTracking(node.right)
path.pop() // 恢复现场,撤销上面的 path.push(node.val.toString());
}
backTracking(root)
return ans
}js
var binaryTreePaths = function (root) {
const ans = []
const path = []
function dfs(node) {
if (node === null) {
return
}
path.push(node.val.toString())
if (node.left === null && node.right === null) {
// 叶子节点
ans.push(path.join('->'))
} else {
dfs(node.left)
dfs(node.right)
}
path.pop() // 恢复现场,撤销上面的 path.push(node.val.toString());
}
dfs(root)
return ans
}