Задача Разность по потомкам
https://t.me/Golang_googleСложность: Лёгкая
Условие задачи: Дан корень двоичного дерева, верните сумму наклона каждого узла дерева.
Наклон узла дерева - это абсолютная разница между суммой всех значений узла левого поддерева и всех значений узла правого поддерева. Если узел не имеет левого дочернего элемента, то сумма значений узла левого поддерева обрабатывается как 0. Правило аналогично, если у узла нет правого дочернего элемента.
Пример:
Ввод: root = [1,2,3]
Вывод: 1
Ввод: root = [4,2,9,3,5,null,7]
Вывод: 15
Решение задачи
func abs(x int) int {
if x < 0 {
return -x
}
return x
}
func dfs(node *TreeNode, ans *int) int {
if node == nil {
return 0
}
l := dfs(node.Left, ans)
r := dfs(node.Right, ans)
*ans += abs(l - r)
return l + r + node.Val
}
func findTilt(root *TreeNode) int {
ans := 0
dfs(root, &ans)
return ans
}