[LeetCode] Binary Tree Tilt

아르당·2026년 1월 29일

LeetCode

목록 보기
119/134
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

이진 트리 root가 주어졌을 때, 모든 트리 노드의 기울기의 합을 반환해라.

트리 노드의 기울기는 모든 왼쪽 서브트리 노드 값의 합과 모든 오른쪽 서브트리 노드 값의 합의 절댓값 차이이다. 노드에 왼쪽 자식이 없는 경우, 왼쪽 서브트리 노드 값의 합은 0으로 처리된다. 노드에 오른쪽 자식이 없는 경우에도 동일한 규칙이 적용된다.

Example

#1

Input: root = [1, 2, 3]
Output: 1
Explanation:
노드 2의 기울기: |0 - 0| = 0
노드 3의 기울기: |0 - 0| = 0
노드 1의 기울기: |2 - 3| = 1
모든 기울기의 합: 0 + 0 + 1 = 1

#2

Input: root = [4, 2, 9, 3, 5, null, 7]
Output: 15
Explanation:
노드 3의 기울기: |0 - 0| = 0
노드 5의 기울기: |0 - 0| = 0
노드 7의 기울기: |0 - 0| = 0
노드 2의 기울기: |3 - 5| = 2
노드 9의 기울기: |0 - 7| = 7
노드 4의 기울기: |(3 + 5 + 2) - (9 + 7)| = |10 - 16| = 6
모든 기울기의 합: 0 + 0 + 0 + 2 + 7 + 6 = 15

#3

Input: root = [21, 7, 14, 1, 1, 2, 2, 3, 3]
Output: 9

Constraints

  • 트리에 있는 노드의 수는 [0, 10^4] 범위에 있다.
  • -1000 <= Node.val <= 1000

Solved

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    int result = 0;

    public int findTilt(TreeNode root) {
        postOrder(root);

        return result;
    }

    private int postOrder(TreeNode root){
        if(root == null) return 0;

        int left = postOrder(root.left);
        int right = postOrder(root.right);

        result += Math.abs(left - right);

        return left + right + root.val;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글