auto-generated entry for Balanced Binary Tree. the solution files are available below.
solution files
- C++
balanced-binary-tree/synced-solution.cpp - Python
balanced-binary-tree/synced-solution.py - TypeScript
balanced-binary-tree/synced-solution.ts
Collected C++, Python, TypeScript solutions for balanced binary tree. Add a dedicated write-up later if you want deeper notes.
auto-generated entry for Balanced Binary Tree. the solution files are available below.
balanced-binary-tree/synced-solution.cppbalanced-binary-tree/synced-solution.pybalanced-binary-tree/synced-solution.tsclass Solution:
def isBalanced(self, root: Optional[TreeNode]) -> bool:
def getHeight(node):
if not node:
return class="syntax-number">0
left_height = getHeight(node.left)
if left_height == -class="syntax-number">1:
return -class="syntax-number">1
right_height = getHeight(node.right)
if right_height == -class="syntax-number">1:
return -class="syntax-number">1
if abs(left_height - right_height) > class="syntax-number">1:
return -class="syntax-number">1
return max(left_height, right_height) + class="syntax-number">1
return getHeight(root) != -class="syntax-number">1
class Solution {
public:
bool isBalanced(TreeNode* root) {
return getHeight(root) != -class="syntax-number">1;
}
private:
int getHeight(TreeNode* node) {
if (!node) return class="syntax-number">0;
int left_height = getHeight(node->left);
if (left_height == -class="syntax-number">1) return -class="syntax-number">1;
int right_height = getHeight(node->right);
if (right_height == -class="syntax-number">1) return -class="syntax-number">1;
if (abs(left_height - right_height) > class="syntax-number">1) return -class="syntax-number">1;
return max(left_height, right_height) + class="syntax-number">1;
}
};
function isBalanced(root: TreeNode | null): boolean {
function getHeight(node: TreeNode | null): number {
if (!node) return class="syntax-number">0;
const left_height = getHeight(node.left);
if (left_height === -class="syntax-number">1) return -class="syntax-number">1;
const right_height = getHeight(node.right);
if (right_height === -class="syntax-number">1) return -class="syntax-number">1;
if (Math.abs(left_height - right_height) > class="syntax-number">1) return -class="syntax-number">1;
return Math.max(left_height, right_height) + class="syntax-number">1;
}
return getHeight(root) !== -class="syntax-number">1;
}