
0과 1로만 이루어진 이진 트리에서, 1을 하나도 포함하지 않는 서브트리를 모두 제거한 트리를 반환한다.
"0인 노드를 지운다"가 아니라 "1이 없는 서브트리를 지운다" 는 점이 핵심이다.
값이 0이어도 자손에 1이 있으면 그 노드는 남아야 한다.
노드를 지울지는 자식들의 결과를 알아야 정할 수 있으므로, 자식부터 처리하는 후위 순회(post-order)로 푼다.
null이면 아래쪽에 1이 없다는 뜻이다.null을 반환해 자신을 제거한다.function pruneTree(root: TreeNode | null): TreeNode | null {
if (!root) return null;
root.left = pruneTree(root.left);
root.right = pruneTree(root.right);
if (root.val === 0 && !root.left && !root.right) return null;
return root;
}
root.left, root.right에 다시 대입하면 별도의 삭제 로직 없이 가지치기가 끝난다.null이 반환된다.