
😎풀이
- 좌측 서브트리 높이를 구한다.
- 우측 서브트리 높이를 구한다.
- 좌 우 서브트리 높이가 같은지 비교한다.
3-1. 같다면, 2의 h제곱 - 1을 통해 전체 노드의 수를 바로 구한다.
3-2. 다르다면, 재귀적으로 현재 노드 + 좌측 노드(재귀) + 우측 노드(재귀)를 통해 총 노드의 수를 구한다.
function countNodes(root: TreeNode | null): number {
if (!root) return 0;
let leftHeight = 0;
let leftNode = root;
while (leftNode) {
leftHeight++;
leftNode = leftNode.left;
}
let rightHeight = 0;
let rightNode = root;
while (rightNode) {
rightHeight++;
rightNode = rightNode.right;
}
if (leftHeight === rightHeight) {
return (1 << leftHeight) - 1;
}
return 1 + countNodes(root.left) + countNodes(root.right);
}