
二叉树,每个节点的值是0~9的数字,
根到叶子节点的路径上代表了一个数字。
求所有根到叶子路径上的数字之和。
思路:
可能会想到DFS,但是二叉树的DFS和前序遍历其实是差不多的。
遍历应该是从root到leaf的,从上而下,
每遍历到一个节点,用高位的数值+root.val,
然后遍历root.left, root.right,
直到到了leaf, 把整个数字加到sum里面。
所以用到了树的前序遍历。
class Solution {
int sum = 0;
public int sumNumbers(TreeNode root) {
preOrder(root, 0);
return sum;
}
void preOrder(TreeNode root, int cur){
if(root == null) return;
cur = cur * 10 + root.val;
if(root.left == null && root.right == null) {
sum += cur;
}
preOrder(root.left, cur);
preOrder(root.right, cur);
}
}
计算二叉树根到叶子节点路径数字之和
该文章介绍了一种方法来计算二叉树中,从根节点到叶子节点的所有路径上数字的总和。通过使用深度优先搜索(DFS)策略,特别是前序遍历,结合节点值动态构建路径数字,并在到达叶子节点时将其添加到总和中。
318

被折叠的 条评论
为什么被折叠?



