Hello!

In this problem, a tree is input and you need to find the sum of all the branches in the tree. The algorithm for solving this problem is simple. Let’s take a tree

``````    6
/ \
4  10
/ \   \
2   5   23
``````

We start from the root, the sum here is 6. Go further down the tree in the left branch it will be 6 + 4 = 10 and in the right 10 + 6 = 16.

``````         6 + 0
/ \
6 + 4  10 + 16
/ \   \
2   5   23
``````

We move further on a tree in the left part it turns out 10 + 2 = 12 and 10 + 5 = 115 and in the right 16 + 23 = 39

``````            6 + 0
/    \
6 + 4      10 + 6
/ \      \
10 + 2   5 + 10 23 + 16
``````

We go further down the tree but there is no more data and therefore the sum we get 12, 15 and 39

``````package main

import (
"fmt"
)

type Tree struct {
root *Node
}

type Node struct {
key   int
left  *Node
right *Node
}

func main() {
tree := Tree{
&Node{
key: 5,
left: &Node{
key: 4,
},
right: &Node{
key: 10,
},
},
}

branchSum(tree)
}
func branchSum(tree Tree) {
sum := []int{}
branchSumHelper(tree.root, 0, &sum)
fmt.Println(sum)
}

func branchSumHelper(node *Node, runningSum int, sum *[]int) *[]int {
if node == nil {
return sum
}
newRunningSum := runningSum + node.key
if node.left == nil && node.right == nil {
*sum = append(*sum, newRunningSum)
return sum
}
branchSumHelper(node.left, newRunningSum, sum)
branchSumHelper(node.right, newRunningSum, sum)

return sum
}
``````