Задача Разность по потомкам

Задача Разность по потомкам

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
}


Report Page