二叉树输出全路径+二叉树全路径求和
二叉树全路径求和
function FullPathSum(tree){
if(!tree) return 0;
let res = [];
const dfs = (node, sum)=> {
if(!node.left && !node.right) res.push(sum);
if(node.left) dfs(node.left, node.left.val + sum);
if(node.right) dfs(node.right, node.right.val + sum);
}
dfs(tree, tree.val);
return res.reduce((p, c)=> p + c, 0)
}
二叉树输出全路径
function FullPaths(tree){
if(!tree) return [];
let res = [];
const dfs = (node, str)=> {
if(!node.left && !node.right) res.push(str);
if(node.left) dfs(node.left, str + '->' + node.left.val);
if(node.right) dfs(node.right, str + '->' + node.right.val);
}
dfs(tree, tree.val);
return res;
}
调用
let tree = {
val: 1,
left: {
val: 2,
left: {
val: 3,
left: null,
rigth: null,
},
right: {
val: 4,
left: null,
right: {
val: 6,
left: null,
rigth: null,
},
}
},
right: {
val: 5,
left: null,
right: null
}
}
FullPathSum(tree) //25
FullPaths(tree) //["1->2->3", "1->2->4->6", "1->5"]