Tree - 129. Sum Root to Leaf Numbers

时间:2022-07-25
本文章向大家介绍Tree - 129. Sum Root to Leaf Numbers,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

129. Sum Root to Leaf Numbers

Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number.

An example is the root-to-leaf path 1->2->3 which represents the number 123.

Find the total sum of all root-to-leaf numbers.

Note: A leaf is a node with no children.

Example:

Input: [1,2,3]
    1
   / 
  2   3
Output: 25
Explanation:
The root-to-leaf path 1->2 represents the number 12.
The root-to-leaf path 1->3 represents the number 13.
Therefore, sum = 12 + 13 = 25.

思路:

题目意思是根节点到叶子节点路劲构成一个整型数,对所有路劲求和,其实257,、112、113和现在的129题,都是一类模板题,只是稍作变形,都可以用递归或者迭代,从根节点访问到叶子节点,实质是先序遍历。

代码:

go:

/**

 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func sumNumbers(root *TreeNode) int {
    var res int
    if root == nil {
        return res
    }
    
    recursive(root, root.Val, &res)
    
    return res
}


func recursive(node *TreeNode, sum int, res *int) {
    if node.Left == nil && node.Right == nil {
        *res += sum    
    }
    
    if node.Left != nil {
        recursive(node.Left, sum * 10 + node.Left.Val, res)
    }
    
    if node.Right != nil {
        recursive(node.Right, sum * 10 + node.Right.Val, res)
    }
}