LeetCode每日一题:根到叶之和

问题描述

Given a binary tree containing digits from0-9only, each root-to-leaf path could represent a number.
An example is the root-to-leaf path1->2->3which represents the number123.
Find the total sum of all root-to-leaf numbers.
For example,
1
/
2 3

The root-to-leaf path1->2represents the number12.
The root-to-leaf path1->3represents the number13.
Return the sum = 12 + 13 =25.

问题分析

很明显,计算公式是父节点乘10+子节点,采用根左右的先序遍历就行了,采用递归做,每往下走一层,上面层数的值乘10。

代码实现

public int sumNumbers(TreeNode root) {
        int sum = 0;
        if (root == null) return 0;
        else return preOrderSumNumbers(root, sum);
    }

    private int preOrderSumNumbers(TreeNode root, int sum) {
        if (root == null) return 0;
        sum = sum * 10 + root.val;
        if (root.left == null && root.right == null) return sum;
        else return preOrderSumNumbers(root.left, sum) + preOrderSumNumbers(root.right, sum);
    }

你可能感兴趣的:(LeetCode每日一题:根到叶之和)