문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
이진 트리 root가 주어졌을 때, 모든 트리 노드의 기울기의 합을 반환해라.
트리 노드의 기울기는 모든 왼쪽 서브트리 노드 값의 합과 모든 오른쪽 서브트리 노드 값의 합의 절댓값 차이이다. 노드에 왼쪽 자식이 없는 경우, 왼쪽 서브트리 노드 값의 합은 0으로 처리된다. 노드에 오른쪽 자식이 없는 경우에도 동일한 규칙이 적용된다.
#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
/**
* 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;
}
}