import java.util.*;

/*

  • public class TreeNode {
  • int val = 0;
  • TreeNode left = null;
  • TreeNode right = null;
  • } */

public class Solution { /** * * @param root TreeNode类 * @return int整型 / public int sumNumbers(TreeNode root) { //边界条件的判断 if (root == null) return 0; Queue nodeQueue = new LinkedList<>(); Queue valueQueue = new LinkedList<>(); int res = 0; nodeQueue.add(root); valueQueue.add(root.val); while (!nodeQueue.isEmpty()) { //节点和节点对应的值同时出队 TreeNode node = nodeQueue.poll(); int value = valueQueue.poll(); if (node.left == null && node.right == null) { //如果当前节点是叶子结点,说明找到了一条路径,把这条 //路径的值加入到全局变量res中 res += value; } else { //如果不是叶子节点就执行下面的操作 if (node.left != null) { //把子节点和子节点的值分别加入到队列中,这里子节点的值 //就是父节点的值10+当前节点的值 nodeQueue.add(node.left); valueQueue.add(value * 10 + node.left.val); } if (node.right != null) { nodeQueue.add(node.right); valueQueue.add(value * 10 + node.right.val); } } } return res; } }