Balanced Binary Tree
EasyTreeDepth-First SearchBinary Tree
Solution
import { TreeNode } from '@algorithm/lib';
export function isBalanced(root: TreeNode | null): boolean {
/**
* 해당 노드의 높이를 반환
* 만약, 자식 노드의 높이 차이가 1이상인 경우 -1을 반환
*/
function getHeight(node: TreeNode | null): number {
if (node === null) {
return 0;
}
const leftHeight = getHeight(node.left);
const rightHeight = getHeight(node.right);
if (leftHeight === -1 || rightHeight === -1 || Math.abs(leftHeight - rightHeight) > 1) {
return -1;
}
return Math.max(leftHeight, rightHeight) + 1;
}
return getHeight(root) !== -1;
}